【发布时间】:2020-05-12 07:33:28
【问题描述】:
我有一个带有以下代码的 servlet
@WebServlet(urlPatterns = "/attachmentUpload.do")
@MultipartConfig
public class AttachmentUploadServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (operationName != null && operationName.equalsIgnoreCase("attachToSNOW")) {
JSONArray runbookRows = new JSONArray(request.getParameter("runbook"));
LOGGER.log(Level.INFO, "runbook rows:{0}", runbookRows.toString());
}
}
}
像这样从jsp调用ajax
$.ajax({
url: "attachmentUpload.do",
method: "post",
data: {"operationName": "attachToSNOW",
"runbook": JSON.stringify(rowArray)
},
success: function (data) {
console.log("ajax called");
},
error: function (msg) {
console.log("Couldn't attach file");
}
});
ajax 调用似乎没有命中部署我的应用程序的 servlet(tomcat 8),而在连接到 Netbeans 的本地 tomcat 中同样有效。
我完全不知道是什么问题。
坚持了几个星期
编辑 真正的问题是,当我从父 jsp 打开一个子 jsp 时。在子 JSP 中,我将一些数据转储到一个临时文件中,该文件稍后将被推送到 Web 服务,提到的 ajax 调用在子 jsp 中。而且我在 tomcat stdout(也是临时文件创建)中没有日志,因此我知道部分代码没有被访问。
只要我将 ajax 调用更改为下面,事情就开始工作了 :)
$.ajax({
url: "attachmentUpload.do",
method: "post",
**async: false,
cache: false,**
data: {"operationName": "attachToSNOW",
"runbook": JSON.stringify(rowArray)
},
success: function (data) {
window.opener.log("ajax called");
},
error: function (msg) {
console.log("Couldn't attach file");
}
});
异步和缓存似乎发挥了作用
【问题讨论】:
-
您尝试过使用您网站的
absolute path吗? -
绝对路径如???
-
浏览器开发者工具告诉你什么?
-
编辑添加,浏览器开发工具帮助调试,我看到了我在ajax完成后从子jsp抽出来的父jsp日志