javascript - 请求参数中的 Ajax POST 数据

标签 javascript jquery ajax spring spring-annotations

我正在发出如下 POST 请求:

 $.ajax({
     url :"/clientCredentials.json",
     type: "POST",
     data: {
        "clientEmail": email,
        "clientName":clientName,
        "orgName":orgName,
        "logoURL":logoURL,
        "redirectURI":redirectUri
     },
     success: function(response){
        alert("sucess");

     },
     error:function(response){
         alert("something went wrong");
     }
 });

在服务器上,我使用@RequestParams 来获取这些数据。

@RequestParam String clientEmail, @RequestParam String clientName, @RequestParam String orgName, @RequestParam String logoURL, @RequestParam String redirectURI

我从服务器获取以下内容:

{"code":"400","errorMessage":"Required String parameter 'clientEmail' is not present"}

如果我使用@RequestBody 而不是@RequestParam 来接受这个数据,它工作正常。

我的问题是如何在请求参数中获取这些数据?我究竟做错了什么? 我也试过 Jquery($.get(), $.post()) 。没有任何效果。

感谢您的帮助。

最佳答案

我刚刚用最新版本的 spring boot 和 jquery 做了一个小项目,它运行良好,根据调查,我发现有两个因素可以导致这个问题,一个来自 jquery,另一个来自 Spring MVC 转换器:

1- jquery ajax 有contentType 参数

contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')

如果这个更改为 application/jsonapplication/xml 将改变它向服务器发送请求的方式然后将对服务器解析产生问题,但它是默认值将以 key=value 逗号分隔的形式发送表单,这对于 FormHttpMessageConverter 是可以的,“这将把我们带到下一个点”

2- spring MVC 使用 FormHttpMessageConverter 进行 "application/x-www-form-urlencoded" 解析或转换,然后你可以使用 @RequestParam 如果此转换器更改为其他转换器,例如:

MappingJackson2HttpMessageConverter for 'application/json'

Jaxb2CollectionHttpMessageConverter for 'application/xml'

因此它将期待另一个请求,您可以使用 @RequestBody

获取它

因此,您必须使用浏览器中的开发工具检查来自 jquery 的请求是表单、json 还是 xml,然后检查您的 spring 代码/配置以确保此请求由 FormHttpMessageConverter< 转换,此转换器可以通过您的 @RequestMapping 的参数进行更改。

关于javascript - 请求参数中的 Ajax POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549794/

相关文章:

java - 饼图添加onclick功能

javascript - 如何在MySQL数据库中更新数据后显示加载图像

javascript - 从动态创建的 ajax 调用列表中读取结果

javascript - 未定义的 JavaScript 函数?

javascript - 有没有一种方法可以将 MongoDB 中的两个数组合并为一个数组?

javascript - 全栈 JavaScript 框架是在客户端还是服务器上创建 HTML?

javascript函数删除html部分

javascript - 如何使用 jquery 脚本使向上滑动默认打开?

jquery - 将项目从一个可排序的 jqueryui 获取到另一个时禁用项目移动的动画

Php Ajax foreach 循环故障