MMM*_*MMS 2 ajax url jquery servlets http-status-code-404
我试图使用ajax调用调用servlet,如下所示:
$.ajax({
url: 'CheckingAjax',
type: 'GET',
data: { field1: "hello", field2 : "hello2"} ,
contentType: 'application/json; charset=utf-8',
success: function (response) {
//your success code
alert("success");
},
error: function (errorThrown) {
//your error code
alert("not success :"+errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
但是,它会error起作用并显示警报:
没有成功:没找到
这是怎么造成的,我该如何解决?
当您指定相对URL(不以scheme或开头的URL /)时,它将相对于当前请求URL(您在浏览器的地址栏中看到的URL).
您告诉您的servlet可用于:
想象一下,运行ajax脚本的网页是通过以下方式打开的:
并指定相对URL url: "CheckingAjax",然后将其解释为:
但这不存在.因此,它将返回HTTP 404"找不到页面"错误.
为了使其工作,您基本上需要使用以下方法之一指定URL:
url: "http://localhost:8080/FullcalendarProject/CheckingAjax"
这不便携.每次将webapp移动到另一个域时,都需要对其进行编辑.您无法从webapp内部控制此操作.
url: "/FullcalendarProject/CheckingAjax"
这也不是真正的便携式.每次更改上下文路径时都需要编辑它.您无法从webapp内部控制此操作.
url: "../CheckingAjax"
这实际上也是不可移植的,尽管您可以从webapp内部完全控制它.每次将JSP移动到另一个文件夹时,您都需要对其进行编辑,但如果您正在使用JSP,那么您基本上已经忙于编码,因此可以轻松地同时完成.
最好的方法是让JSP EL动态打印当前的请求上下文路径.假设JS代码包含在JSP文件中:
url: "${pageContext.request.contextPath}/CheckingAjax"
或者当它被包含在自己的JS文件中时(好的做法!),然后创建一个全局JS变量:
<script>var contextPath = "${pageContext.request.contextPath}";</script>
<script src="yourajax.js"></script>
Run Code Online (Sandbox Code Playgroud)
同
url: contextPath + "/CheckingAjax"
或文档元素上的HTML5数据属性:
<html data-contextPath="${pageContext.request.contextPath}">
<head>
<script src="yourajax.js"></script>
Run Code Online (Sandbox Code Playgroud)
同
url: $("html").data("contextPath") + "/CheckingAjax"
| 归档时间: |
|
| 查看次数: |
5292 次 |
| 最近记录: |