今天开发过程中碰到的一个问题, 提交表单的时候使用ajax发送请求成功, 数据也添加进去了, 但是确没有收到返回, 页面就自动刷新了

原因

<button type="submit" onclick="updateSubmit()" class="btn btn-primary">提交</button>

这里的提交按钮type为submit, submit会强制刷新页面, 因为页面被刷新了, 那么ajax返回的信息来到了一个新的页面, 那返回的信息自然是接收不到的

解决

<button type="button" onclick="updateSubmit()" class="btn btn-primary">提交</button>

所以将submit改成button就解决了!


在百度的过程中, 也找到了其他可能发生的情况:

  • 如果后台的类是用的@Controller注解, 则方法必须加上@ResponseBody注解, 也可以直接使用@RestController, 这是@Controller和@ResponseBody两个注解的结合, 所以返回json数据就不用在方法前面加@ResponseBody注解了
  • 如果传递的参数是数组, 后台是用ArrayList接收, 则需要在ajax中添加 traditional:true 因为这个属性默认是false, jquery会深度序列化这个对象, 以适应PHP等框架, 我们可以通过设置tradtional为true阻止深度序列化
    traditional是false时, 使用数组或list接收就是[[“abc”,“qwe”]]格式
    traditional是true时, 使用数组或list接收就是[“abc”,“qwe”]格式

更多推荐

解决AJAX发送请求成功却接收不到返回参数问题