也许我应该闭嘴并继续前进,但有些事情告诉我事情并不像我想象的那么顺利,我需要解决它。
基本上,我正在执行一个简单的 AJAX 调用来告诉服务器用户选择了什么:已经存在的项目或新项目。 AJAX 看起来像这样:
var dataString = 'existingProject='+ $("#existingProject").val() + '&newProjName=' + $("#newProjName").val();
//AJAX call to post selections to server
$.post('/myproj/manageProjects.html',dataString);
处理此 post 调用的 Spring MVC 签名如下所示:
@RequestMapping(value="/manageProjects",produces="application/json",method=RequestMethod.POST)
public StatusResponse manageProjects(
@RequestParam(value="existingProject",required=false) String existingProj,
@RequestParam(value="newProjName",required=false) String newProj,
HttpSession session){
令我惊讶的是,我正在使用我期望的正确变量和值调用 managementProjects。服务器处理请求并返回一个我创建的名为 StatusResponse 的 pojo,其中包含一个 bool 值(成功或失败)和服务器反馈消息列表。我创建了一个简单状态为“true”的成功并将其传回。
然后,客户端会抛出 404 未找到的 ManageProjects.html,并继续其愉快的方式,就好像没有发生任何问题一样。
所以...它找到了吗?如果 StatusResponse 类型的 pojo 是来自 Spring MVC Controller 的不适当响应,那么正确的响应是什么?为什么消息成功到达 Controller ,但客户端却收到 404?!
感谢您的见解......
脚注:如果这看起来与今天早些时候的问题相似,我们深表歉意。我从错误的角度看待核心问题,并在那篇文章中造成了不必要的困惑......
最佳答案
当我遇到这种情况时,通常是因为 dom 中有一个表单,并且您单击了一个触发 xhr 的提交。它会触发 xhr,但它也会提交表单,如果未提供,则默认为当前 url。因此,请尝试阻止 javascript 事件传播、删除提交或仅删除表单标记。
关于jquery - AJAX 失败并显示 404...但仍然有效?是什么赋予了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814715/