我试图将一个复杂的json对象发布到一个ajax jquery,但似乎不可能保留一个简单的数组而不将它转换为一个关联的数组,其中“0”,“1”......作为键。
请求:
var dimension_set = [{ 'x': 1, 'z': 2, 'y': 3 }, { 'x': 4, 'z': 5, 'y': 6 }];
var parameters = { "dimension_set": dimension_set };
jQuery.ajax({ type: 'POST', url: WEBSERVICE_URL, data: parameters });
参数:
dimension_set[0][x]:1
dimension_set[0][z]:2
dimension_set[0][y]:3
dimension_set[1][x]:4
dimension_set[1][z]:5
dimension_set[1][y]:6
虽然我想这样:
参数:
dimension_set[][x]:1
dimension_set[][z]:2
dimension_set[][y]:3
dimension_set[][x]:4
dimension_set[][z]:5
dimension_set[][y]:6
有没有办法解决这个问题?
注意:通过curl或http表单可行。 请求:
curl -X POST WEBSERVICE_URL -F "dimension_set[][x]=1" -F "dimension_set[][y]=2" -F "dimension_set[][z]=3" -F "dimension_set[][x]=4" -F "dimension_set[][y]=5" -F "dimension_set[][z]=6"
服务器端打印:
Parameters: {"dimension_set"=>[{"x"=>"1", "y"=>"2", "z"=>"3"}, {"x"=>"4", "y"=>"5", "z"=>"6"}]}
答案 0 :(得分:0)
这似乎是一个jquery“功能”。 在本文档中:http://api.jquery.com/jQuery.param/ 见最后一行:
$.param({ a: { b:1,c:2 }, d: [3,4,{ e:5 }] }) // "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"
显然,我想要的(参数数组'd'中没有索引)对于复杂对象是不可能的,只对整数有效!