通过AJAX将关联数组传递给PHP

时间:2009-04-27 00:13:36

标签: php javascript jquery ajax

我正在尝试通过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] => 
        )

)

思想?

3 个答案:

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