2012-06-03 2 views
1

У меня есть двумерный массив объектов, как так:JSON_decode двухмерный массив объектов?

function test(n){ 
    this.id = n; 
} 

var testArray= new Array(2); 
for(i = 0; i < testArray.length; i++){ 
    testArray[i] = new Array(2); 
    for(j = 0; j < testArray[i].length; j++){ 
    testArray[i][j] = new test((2*i)+j); 
    } 
} 

Я тогда stringify его размещать с помощью AJAX так:

var data = {testA: {testB: testArray[0], testC: testArray[1]}} 
var text = JSON.stringify(data); 

После того, как я выполняю JQuery AJAX вызов:

$.post("test.php",text,function(data){ 
    alert(data); 
}); 

Я не могу понять, как декодировать и использовать этот объект на стороне PHP, до сих пор я пробовал что-то вроде этого:

<?php 

$data = json_decode($_POST); 
if($data == null){ 
    echo "fail"; 
} else { 
    echo $data; 
} 

?> 

Но я получаю сообщение об ошибке, которое говорит, что ожидает строку, и я передаю ей массив. Я также пробовал что-то вроде

$data = json_decode($_POST['testA']); 

, а затем ошибка не появляется, но вместо этого она всегда выводит «сбой».

Кто-нибудь знает, что мне нужно сделать на стороне PHP, чтобы получить доступ к данным?

ответ

2

Зачем вам нажимать на него? Если вы просто отправить его как это:

$.post("test.php", data, function(data) { 

Вы должны быть в состоянии восстановить его, как это:

$data = $_POST['testA']; 
+0

Я просто попытался разместить данные непосредственно, и когда я называю $ данных = json_decode ($ _POST [ 'Testa']); Я все еще вижу ошибку, когда он говорит, что ожидает строку – Dashiamo

+0

В моем ответе нет json_decode, так как $ _POST ['testA'] уже является массивом. – Jeroen

+0

Ах, моя ошибка, хорошо, что сейчас работает. Большое спасибо :) Я понимаю, что мне не нужно строгать данные, поскольку я уже вручную помещаю их в формат JSON. Итак, я раньше стягивал объект JSON? – Dashiamo

Смежные вопросы