Передача ассоциативного массива через AJAX в PHP - PullRequest
1 голос
/ 27 апреля 2009

Я пытаюсь передать это PHP-скрипту через AJAX:

  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 ]

6 голосов
/ 27 апреля 2009

Заменить это:

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();
}

Вам нужен массив объектов, а не массив массивов.

3 голосов
/ 27 апреля 2009

Вы переэкспонируете 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();
   }
0 голосов
/ 27 апреля 2009

Ах, это имеет больше смысла; то, как вы его отформатировали ранее, не соответствовало вводу.

Anyhoo, объект ответов является объектом JavaScript; PHP не знает, как с этим справиться. Я предлагаю вам разобрать отдельные элементы перед переходом на PHP или использовать json_decode () на стороне PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...