2011-09-05 73 views
0

我有一个数组,其中包含许多动态生成的键/值,所以我永远不知道我肯定发布什么数据。这意味着我不能使用:jQuery发布动态密钥通过ajax

$.ajax({ 
    url: "php/addressMain.php", 
    data: {data: alldata}, 
    type: "POST", 
    success: function(data) {} 
}); 

正如我从来不知道数据是什么。我现在只是将它转换为查询字符串,并将其作为GET发布,但是我真正需要的是将查询字符串变得太长,将我的阵列转换为AJAX帖子的data数组。

+0

为什么不呢? (我要在这里为'一天的评论'。) – phooji

+0

因为密钥名称是动态生成的,我怎样才能不使用eval? – rickyduck

回答

1

既然你已经能够创建一个查询字符串,为什么不使用带有POST的查询字符串,因为你的问题似乎是GET的长度限制?

+0

愚蠢的我。我已经上了28个小时(很好的借口) – rickyduck

1

我认为$(...).serialize()将能够帮助你。

+0

谨慎阐述?我尝试序列化,虽然它工作正常,并像我期望的那样序列化它,但是如何在ajax请求中使用它? – rickyduck

+0

'data:$(...)。serialize()' –

1

我不确定我是否遵循问题所在,但这应该适用于传递数据。

var POSTdata = [1,2,3,4]; 
$.ajax({ 
    url: "php/addressMain.php", 
    data: { data: POSTdata }, 
    type: "POST", 
    success: function(data) {} 
}); 

然后在PHP中,你应该有这样的:

$_POST['data'] 
// should be = array(1, 2, 3, 4) 

也是如此,如果POSTDATA = {键:值,键2:值2} 然后$ _ POST [ '数据'] ==阵列('key'=>'value','key2'=>'value2')

+0

很好的例子,数据不是通过PHP发布的。 – rickyduck

+0

你的意思是$ _POST ['data']是空的?你可以让你的addressMain.php做一个print_r($ _ POST)并在你的成功函数中添加一个警告来看看设置了什么? – loganfsmyth

+0

$ _POST ['data']从来不存在,'alldata'通过JavaScript从页面上现有的元素/输入填充 – rickyduck