编程语言
首页 > 编程语言> > javascript – Request Param中的Ajax POST数据

javascript – Request Param中的Ajax POST数据

作者:互联网

我正在发出一个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做了一个小项目,它运行良好,根据调查我发现有2个因素可以解决这个问题,一个来自jquery,另一个来自Spring MVC转换器:

1- jquery ajax有contentType参数

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

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

2- spring MVC正在使用FormHttpMessageConverter进行“application / x-www-form-urlencoded”解析或转换,如果此转换器更改为其他转换器,则可以使用@RequestParam:

MappingJackson2HttpMessageConverter为’application / json’

要么

‘application / xml’的Jaxb2CollectionHttpMessageConverter

所以它会期待另一个请求,你可以使用@RequestBody获得它

因此,您必须使用浏览器中的开发工具检查来自jquery的请求是form,json还是xml,然后检查spring命令/配置以确保此请求由FormHttpMessageConverter转换,此转换器可以通过以下方式更改: @RequestMapping的参数.

标签:javascript,jquery,spring,ajax,spring-annotations
来源: https://codeday.me/bug/20190828/1757030.html