2013-08-16 73 views
2
到PHP

我已经得到了jQuery代码:传递多维数组,jQuery和AJAX

$(document).ready(function() { 

answers = new Array(); 

answers[0] = new Array(); 
answers[0]['question_id'] = 12; 
answers[0]['answer_id'] = 32; 

answers[1] = new Array(); 
answers[1]['question_id'] = 55; 
answers[1]['answer_id'] = 132; 

answers[2] = new Array(); 
answers[2]['question_id'] = 987; 
answers[2]['answer_id'] = 1112; 

$.ajax({ 
    type: "POST", 
    url: "collect.php", 
    data: {answers: answers}, 
    dataType: "json", 
    beforeSend:function(){ 
     // Do something before sending request to server 
    }, 
    error: function(jqXHR, textStatus, errorThrown){ 

     alert(errorThrown); 
    }, 
    success: function(data){ 

     alert('success!'); 
    } 
}); 

});

现在,这个工作吗?根据我在查找代码示例时发现的内容,应该这样做。问题是,我不知道如何在PHP文件中收集数据。我的意思是,这是一个$ _POST [],但那又如何?如何收集$ result [0] ['question_id']和所有其他数据?

非常感谢提前,

卡尔C.卡尔松

+0

只要'var_dump($ _ POST);'你就会看到魔法。 –

+0

@Glavić感谢您的快速回答,但是这给了我“注意:未定义的索引:答案在......”不知道为什么。任何想法?我做了:var_dump($ _ POST ['answers']) –

+0

我没有说'var_dump($ _ POST ['answers']);',我说'var_dump($ _ POST);'。 –

回答

2

你永远不会用数据填充answers数组中的数组,它们的长度仍然为0,因为你使用的是字符串索引而不是int索引。你真正想要的是存储在你的数组中的对象。

answers[0] = {}; 
answers[0]['question_id'] = 12; 
answers[0]['answer_id'] = 32; 
+1

这让我挠了挠脑袋太久了......谢谢你的回复。 –

1

您可以$_POST['answers']收集PHP页面的价值。然后你可以通过数组遍历数组。

+0

谢谢,但这个例子: $ result = $ _POST ['answers'] [0] ['question_id']; 给我“注意:未定义的索引答案在...” –

+0

你可以打印'$ _POST ['answers']'并发送输出! – deepakb

1

它解决了通过改变Javascript来:

answers = {}; 

,我可以那么只需访问数据PHP中:

$_POST['answers'][1]['answer_id']; 

例如,或者通过它只是循环。

感谢您的帮助,女士们,先生们。