在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。
答案 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();