我正在尝试通过AJAX将其传递给PHP脚本:
var answers={};
for (x=0; x< allAnswers.length; x++)
{
answers.x=new Array();
answers.x['id']==allAnswers[x]['id'];
answers.x['val']=$("#field_" + x).val();
}
var data={};
data.id=questions[qId]['id'];
data['answers']=answers;
$.post('index.php',data);
PHP设置为print_r($_POST)
,这是输出:
answers [object Object]
id 3
我做错了什么?
编辑:更改代码以使用数组,即:
var answers=new Array();
for (x=0; x< allAnswers.length; x++)
{
answers[x]=new Array();
answers[x]['id']=allAnswers[x]['id'];
answers[x]['val']=$("#field_" + x).val();
}
var data={};
data.id=questions[qId]['id'];
data['answers[]']=answers;
$.post('index.php',data);
给出print_r:
Array
(
[id] => 3
[answers] => Array
(
[0] =>
[1] =>
)
)
思想?
答案 0 :(得分:6)
替换它:
var answers=new Array();
for (x=0; x< allAnswers.length; x++) {
answers[x]=new Array();
answers[x]['id']=allAnswers[x]['id'];
answers[x]['val']=$("#field_" + x).val();
}
有了这个:
var answers = new Array();
for (x=0; x< allAnswers.length; x++) {
answers[x] = {};
answers[x]['id']=allAnswers[x]['id'];
answers[x]['val']=$("#field_" + x).val();
}
您需要一个对象数组,而不是数组数组。
答案 1 :(得分:3)
你一遍又一遍地重新定义answers.x所以你只会得到最后一个。 x是实际的变量名,而不是您正在考虑的值。你在“allAnswers”行上也有两倍的等价。尝试:
var answers = new Array();
for (x=0; x< allAnswers.length; x++)
{
answers[ x ]=new Array();
answers[ x ]['id'] = allAnswers[x]['id'];
answers[ x ]['val'] = $("#field_" + x).val();
}
答案 2 :(得分:0)
啊,这更有意义;之前格式化的方式与输入不匹配。
Anyhoo,答案对象是一个JavaScript对象; PHP不知道如何处理它。我建议您在传递给PHP之前解析各个项目,或者在PHP端使用json_decode()。