cod*_*der 11 jquery spring spring-mvc
这是我的ajax电话:
$.ajax({
type: 'GET',
url: contextPath + '/test/location',
data: {'objectValues': object.objectValues },
datatype: 'json',
success: function( data ) {
var obj = jQuery.parseJSON( data );
}
});
Run Code Online (Sandbox Code Playgroud)
它给了我这个URL:
HTTP://本地主机:8080 /测试/位置objectValues [] = 1234567890&objectValues [] = 0987654321
我的Spring方法签名如下所示:
@RequestMapping(value = "/location", method=RequestMethod.GET)
public @ResponseBody String loadLocation(@RequestParam(value="objectValues", required=false) String[] objectValues)
Run Code Online (Sandbox Code Playgroud)
为什么我一直为objectValues的值保持null?
Nig*_*gel 17
尝试将RequestParam注释值更改为:
@RequestParam(value="objectValues[]", required=false)
Run Code Online (Sandbox Code Playgroud)
如果这解决了问题,那么这是由于Spring和jQuery之间的参数命名不兼容,其中jQuery想要放置方括号以指示参数是一个数组(我认为PHP也喜欢这个),但是Spring没有'关心.要查看反向尝试,请将ajax请求的"data"参数设置为字符串:'objectValues = 1234567890&objectValues = 0987654321'
tre*_*bor 10
有多种方法可以执行此操作,具体取决于您认为以错误格式发送或接收数据的组件(或您有权修改的组件).
如果您认为jQuery发送数据的默认方式是正确的,请相应地修改控制器(请注意,如果同时使用两者,则需要更改方法签名和注释):
@RequestMapping(value = "/location", method=RequestMethod.GET, params="objectValues[]")
public @ResponseBody String loadLocation(@RequestParam(value="objectValues[]", required=false) String[] objectValues) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果您认为Spring正常运行,但是从jQuery发送的数据不正确,请修改jQuery:
$.ajax({
traditional: true,
...
});
Run Code Online (Sandbox Code Playgroud)
查看更多关于jQuery的AJAX设置的traditional
设置.
我自己认为修改jQuery发送数据的方式更为清晰; 它使我的Controller语法看起来像我想要的.
尝试将 ajaxSettings 设置为传统。
jQuery.ajaxSettings.traditional = true;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17679 次 |
最近记录: |