也许我应该闭嘴并继续往前走,但有些东西告诉我事情并不像我认为的那样好,我需要解决它.
基本上,我正在做一个简单的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){
我脑海里浮现的是,我正在调用带有我期望的正确变量和值的manageProjects.服务器处理请求并返回我创建的pojo,名为StatusResponse,包含布尔值(成功或失败)和服务器反馈消息列表.我创建一个简单状态为“true”的成功并将其传回.
客户端然后抛出404找不到的manageProjects.html并继续它的快乐方式,好像什么都没有出错.
所以….它找到了与否?如果StatusResponse类型的pojo是来自Spring MVC控制器的不恰当响应,那么正确的响应是什么?为什么消息成功命中控制器但客户端收到404?!
感谢您的任何见解……
脚注:如果这看起来类似于今天的早期问题,请道歉.我从错误的角度出现了核心问题,并在该帖子中造成了比必要更多的混乱……
解决方法:
当这发生在我身上时,通常是因为dom中有一个表单,你单击一个触发xhr的提交.它会触发xhr,但它也会提交表单,如果没有提供,则默认为当前url.因此,请尝试停止传播javascript事件,删除提交,或者只删除表单标记.
标签:jquery,ajax,model-view-controller,spring
来源: https://codeday.me/bug/20190626/1291393.html