2013-04-30 20 views
0

我试图复杂JSON对象发布到AJAX jquery的,但似乎不可能保持一个简单的数组,而不必它变换到“0”相关联的阵列中, “1”...作为键。jquery的AJAX简单数组作为参数被转换为相关联的阵列

要求:

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 

有什么办法得到这个?


注:它通过卷曲或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"}]} 
+2

这些都不是关键。那些是索引。 – NilsH 2013-04-30 09:39:43

+0

你如何辨别传递给服务器的参数? – 2013-04-30 09:44:07

+0

如何使这之间的差: dimension_set [] [X]:1 dimension_set [] [Z]:2 dimension_set [] [Y]:3 这: dimension_set [] [X]:4 dimension_set [] [Z]:5 dimension_set [] [Y]:6 。 相同的数组元素有不同的值?这是不可能的,所以你必须得到一个索引。 – Getz 2013-04-30 09:45:24

回答

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”中没有索引)是不可能的复杂的对象,只为整数!