2016-10-15 2 views
1

Я хочу отправить строку JSON в JavaScript и затем с помощью функции кодирования php преобразовать ее в массив.Проблема с преобразованием строки json в php-массиве

После преобразования строки с JavaScript и отправки с Ajax на php-страницу я не могу преобразовать ее в массив.

Это код.

function goJsonAjaxPhp() 
 
{ 
 
    var myObject ={name:"Andreas",surname:"Grech",age:20}; 
 
    var str_json = JSON.stringify(myObject); 
 
    var xhr; 
 
    if(window.XMLHttpRequest) 
 
    { 
 
     xhr = new XMLHttpRequest(); 
 
    } 
 
    else 
 
    { 
 
     xhr = new ActiveXObject("Microsoft.HMLHTTP"); 
 
    } 
 
    xhr.onreadystatechange = handler; 
 
    xhr.open("POST","page_php.php",true); 
 
    xhr.setRequestHeader("Content-type", "application/json"); 
 
    xhr.send(str_json); 
 
            
 
    function handler() 
 
    { 
 
     if(xhr.readyState == 4 && xhr.status == 200) 
 
     { 
 
      document.getElementById("idResult").innerHTML= xhr.responseText; 
 
     } 
 
    } 
 
}
<button onclick=goJsonAjaxPhp()> Json Ajax-PHP </button> 
 
<button onclick=goJsonPhp()> Json Only-PHP </button> 
 
<button onclick=goJsonJavascript()> Json Javascript </button> 
 

 
<div id=idResult></div>

header("Content-Type: application/json;ì"); 
$str_json = file_get_contents('php://input'); 
$arrayPHP = (array) json_encode($str_json,TRUE); 
var_dump($arrayPHP); 

Это выход PHP

enter image description here

Что я делаю неправильно?

+4

Наверняка Вы желаете 'json_decode' в вашем PHP ... –

+0

я уже пробовал, но это не сработало –

+0

Объясните, как это Бесполезный Не работай, пожалуйста. Добавьте свои шаги отладки. –

ответ

0

вместо

$arrayPHP = (array) json_encode($str_json,TRUE); 

попробовать

$arrayPHP = (array) json_decode($str_json,TRUE); 
+2

Вы также можете избавиться от 'cast (') массива, потому что это то, что 'true' делает во втором параметре. Приведение его в массив также помешает вам увидеть, вернул ли он «null», что подразумевает ошибку в декодировании. –

+0

Я уже пробовал, но это не сработало, к сожалению –

+0

Отлаживайте, как было предложено выше, а затем опубликуйте сообщение об ошибке, чтобы мы могли идентифицировать возможный источник ошибок –

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