Ajax 在 tomcat 8 中调用未命中 servlet
Ajax Call not hitting servlet in tomcat 8
我有一个包含以下代码的 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());
}
}
}
和 ajax 像这样从 jsp 调用
$.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");
}
});
异步和缓存似乎发挥了魔力
添加异步和缓存解决了我的问题
$.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");
}
});
我有一个包含以下代码的 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());
}
}
}
和 ajax 像这样从 jsp 调用
$.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");
}
});
异步和缓存似乎发挥了魔力
添加异步和缓存解决了我的问题
$.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");
}
});