我有一个具有url http://localhost:80/Push/GetContacts?id=23和以下servlet映射的ajax调用:
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/GetContacts*</url-pattern>
</servlet-mapping>
不会在ajax调用上调用servlet。它返回HTTP 404未找到的响应。我的ajax调用的正确URL模式是什么?
这是因为servlet而无效的ajax调用。
jQuery.getJSON('http://localhost:8080/Push/GetContacts&callback=?', function(data) {
alert(data.data);
});
servlet:
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException{
try{
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.write("{data: helloworld}");
out.close();
}
catch(Exception e){
e.printStackTrace();
}
答案 0 :(得分:3)
网址模式只需/GetContacts
而不是明星。参数不是servlet映射的一部分,在查找正确的servlet时会被忽略。如果您想支持/GetContacts/23
之类的网址,可以使用/GetContacts/*
的servlet映射,并使用request.getPathInfo
检索ID。
编辑,正如BalusC刚刚注意到的那样,你的ajax调用中的url是不正确的。参数回调应该用问号分隔,而不是&符号:GetContacts?callback=...
此外,{data: helloworld}
根据json spec无效,数据和helloworld都应该用引号括起来。但这也与404问题无关。