javascript - Jquery Ajax POST 不工作。对于 GET 来说效果很好

标签 javascript jquery ajax spring-mvc

我正在尝试发布 jquery Ajax 请求,但它不会发送到我的 MVC Controller 。

$.ajax({
            url : contextPath + "/check/panelnumber",
            type : "POST",
            contentType : "application/json",               
            data :{
                    "execution" : execution,
                    "panelNumber" : panelNumber
            },
});

Spring MVC Controller

@Controller
@RequestMapping("/check")
public class ValidateFieldValueController extends FlowEnabledBaseController {

@RequestMapping(value = "/panelnumber", method = RequestMethod.POST)
public ResponseEntity<String> checkPanelNumber(HttpServletRequest request,
        HttpServletResponse response,
        @RequestParam("panelNumber") String panelNumber,
        @RequestParam("execution") String execution) {
......
Gson gson = new Gson();
return new ResponseEntity<String>(gson.toJson(details), HttpStatus.OK);
}

但是对于 GET 方法来说它工作得非常好! 也尝试添加 dataType: "json"但这样即使 GET 调用也停止工作。浏览器控制台显示错误为 HTTP 400 错误请求,但通过 Firefox 插件检查时,POST 参数正常。 有什么帮助吗?

最佳答案

Spring 在涉及 @RequestParam、POST 正文和 JSON 内容类型时有点敏感:它根本不会解析它们。您可以通过以下三种方法之一解决此问题:

  1. 将内容类型更改为 application/x-www-form-urlencoded
  2. 更改两个@RequestParam单例 @RequestBody Map<String, Object> body ,然后使用 Map手动解析您的参数。
  3. 设置自定义 Argument Resolver可以解析 JSON 以获得您想要的值。

第二种方法可能是最容易更改的,但它会失去 Spring 为您提供的一些自动验证功能。

关于javascript - Jquery Ajax POST 不工作。对于 GET 来说效果很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29350355/

相关文章:

javascript - CSS 或 jQuery 不间歇性加载

javascript - ng-repeat 不渲染最后两个 div

javascript - jquery 1.7 .on 无法正常工作

javascript - 如何使用 Typescript 的自定义方法实现类数组类?

jquery - 如何使绝对div根据其内容调整宽度

xlink 的 jQuery 选择器

javascript - 错误回调 {"readyState":4 ,"status":200 ,"statusText" :"success"}

javascript - Flexbox 文本切断/不换行

javascript - 如何使用 JQuery 获取不包括水平滚动条的 <DIV> 的高度?

javascript - JQuery $.ajax - 未调用 done()