jquery - AJAX 失败并显示 404...但仍然有效?是什么赋予了?

标签 jquery ajax spring model-view-controller

也许我应该闭嘴并继续前进,但有些事情告诉我事情并不像我想象的那么顺利,我需要解决它。

基本上,我正在执行一个简单的 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/

相关文章:

spring - 如何使用 Spring LDAP 身份验证

jquery - 使用 jQuery 检查复选框?

jQuery 删除复选框和关联标签

javascript - 从 javascript 字符串中删除 HTML 标签

javascript - 如何从ajaxError获取ajax持续时间

java - Spring Integration Gateway 中的超时表达式

javascript - 我无法在 Jquery 循环插件中获取缩略图,只能获取文本数字

javascript - xmlHttp.status==200 永远不会为真

c# - ASP.NET 中带有 UpdatePanel 的 CodeMirror

java - 通过 Spring Rest 发出 MultiPart Put 请求,以使用 formData 调用 API(将 Apache MultipartEntityBuilder 替换为 REST)