2015-06-29 3 views
0

У меня возникли проблемы с преобразованием строки JSON в PHP Object/Array. Я много гулял, смотрел учебники по YouTube, но все еще ничего не видел.Javascript для PHP, правильный формат json

JAVA SCRIPT:

xhr = new XMLHttpRequest(); 
xhr.open('POST', 'save.php'); 
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
var json_string = '{"name":"Bandage","picture":"129"}'; 
xhr.send("item=" + json_string); 

PHP:

$item = json_decode($_POST['item']); 

$ пункт, то NULL

Любая идея? Если я не использую функцию json_decode, я получаю корректную запись ctring. Что не так, как должен выглядеть формат, поэтому PHP json_decode может анализировать его на объект или массив? Я также пробовал с/json заголовком, stripslashes в PHP, без результата. Спасибо!

+0

Попробуйте ** JSON.stringify() ** преобразовать значение в нотацию JSON. –

+0

Можете ли вы опубликовать, что var_dump ($ _ POST ['item']); возвращает на php – Juank

+0

ваш 'var json_string' является допустимым json ... Но вы действительно получаете данные' $ _POST' ... данные post, такие как @juank. –

ответ

0

извините за поздний ответ, проблема с новым подключением к Интернету. Спасибо за посты, я получил это работает так:

SCRIPT:

var xhr; 
if (window.XMLHttpRequest) { 
    xhr = new XMLHttpRequest(); 
} 
else if (window.ActiveXObject) { 
    xhr = new ActiveXObject("Msxml2.XMLHTTP"); 
} 
else { 
    throw new Error("Ajax is not supported by this browser"); 
} 
xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4) { 
     if (xhr.status == 200 && xhr.status < 300) { 
      //document.getElementById('div1').innerHTML = xhr.responseText; 
     } 
    } 
} 

var postitem = '{"name":"Bandage","picture":"129"}'; // working 

xhr.open('POST', 'save.php'); 
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
xhr.send("item=" + postitem); 

PHP:

// получить параметр Q из URL

$ пункт = подрезать ($ _POST [ 'пункт']);

$obj = json_decode($item); 

echo $ obj-> name;

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