通过$ .post问题将数组发送到PHP

时间:2014-05-03 14:29:56

标签: javascript jquery ajax arrays

在POST中通过ajax发送到服务器阵列时遇到问题,JQuery版本为1.10.2。我的数组是对象数组(这种对象基本上是一个关联数组)。

函数JSON.stringify(word_mean_arr);返回[[]] - 所以它无法正常工作,如果我只是写:

$.post( "./ajax2/myscript.php", {block_id: bl_id, wm_arr: word_mean_arr})

我无法获得$ POST [' wm_arr']的价值,就像它不存在一样。

我的数组示例如下:

[[key]=>1,[value]=>"this_is_"],[[key]=>2,[value]=>"this_is_str2"]

所以我的目标是:

[  [key]=>1,   [value]=>"this_is_str"]

这就是我构建数组的方式

var word_mean_arr = new Array();
for (var i = 0; i <= this.n_of_wd_mean; i++)
{
    var temp_arr = new Array();
    temp_arr['key'] = $("#tswes_2_"+i).val();
    temp_arr['value'] = $("#tswes_2_"+i).val();
    word_mean_arr.push(temp_arr);
}
console.log("Array to server length>" + word_mean_arr.length);
var jsonString = JSON.stringify(word_mean_arr);

我应该如何传输数据?问题是什么?

更新1: JSON.stringify(temp_arr)[],但console.log(word_mean_arr)时,我看到了数组的整体结构。

更新2 :用temp_arr['key']替换temp_arr[0],解决了我的问题。但仍然很谨慎如何发送key-&gt; val。

2 个答案:

答案 0 :(得分:1)

你的temp_arr变量被初始化为一个数组,但是你可以像对象一样使用它,访问它没有的键。

这将解决问题:

var temp_arr = {
    key: $("#tswes_2_"+i).val(),
    value: $("#tswes_2_"+i).val()
};

而不是:

var temp_arr = new Array();
temp_arr['key'] = $("#tswes_2_"+i).val();
temp_arr['value'] = $("#tswes_2_"+i).val();

答案 1 :(得分:0)

简单地不使用JSON.stringify,jQuery在使用$.post时会对变量进行编码。

var word_mean_arr = $('.tswes').serialize();
console.debug('sending: ');
console.debug(word_mean_arr);
$.post('./ajax2/myscript.php', { block_id: bl_id, wm_arr: word_mean_arr });

如果不起作用,请尝试不同的方法:

var word_mean_arr = [];
for (var i = 0; i <= this.n_of_wd_mean; i++)
{
    var temp_arr   = {};
    temp_arr.key   = $("#tswes_2_"+i).val();
    temp_arr.value = $("#tswes_2_"+i).val();