Декодирование массива объектов JSON в PHP, это обратные косые черты?

#php #jquery #json

#php #jquery #json

Вопрос:

Итак, я отправляю массив объектов в строке JSON с использованием javascript в PHP-скрипт, и у меня возникают реальные проблемы с его декодированием в php.

Мой javascript выглядит следующим образом:

 $.ajax({
    type: 'POST',
    url: "question_save.php",
    data: {myJson:  JSON.stringify(jsonArray)},
    success: function(data){

        alert(data);

    }
});
  

Строка, отправленная в PHP, выглядит следующим образом:

 [{"content":"Question text"},{"answerContent":"Some answer text","score":"234","responseChecked":0,"responseContent":""},{"answerContent":"","score":"0","responseChecked":0,"responseContent":""}]
  

Если я повторю $_POST[‘myJson’] Я понимаю это:

 [{"content":"Question text"},{"answerContent":"Some answer text","score":"234","responseChecked":0,"responseContent":""},{"answerContent":"","score":"0","responseChecked":0,"responseContent":""}]
  

Тем не менее, когда я хочу декодировать JSON и перебирать его вот так…

 $json = $_POST['myJson'];
$data = json_decode($json, true);

foreach ($data as amp;$value) {
    echo("Hi there");
}
  

… Я получаю эту ошибку:

 Warning:  Invalid argument supplied for foreach() in /home/thecrime/public_html/test1/question_save.php on line 15
  

Я действительно не понимаю, какую глупую ошибку я совершаю, это как-то связано с обратными косыми чертами?

Любая помощь очень ценится!

Спасибо, -Бен

Комментарии:

1. выведите значения $data и посмотрите, какое значение для этой переменной после json_decode …

Ответ №1:

Использовать stripslashes ( $string ) http://php.net/manual/en/function.stripslashes.php

Это должно сработать

 $json = $_POST['myJson'];
$json_string = stripslashes($json)
$data = json_decode($json_string, true);

// simple debug
echo "<pre>";
print_r($data);
  

Однако, как уже указывали другие, его лучше отключить magic_quotes_gpc .

Откройте ваш php.ini файл и найдите эту строку:

 magic_quotes_gpc = On
  

Установите его Off и перезапустите сервер.

Комментарии:

1. Симона, ты моя спасительница, и я люблю тебя. Спасибо! : D

2. Хотя, очевидно, правильный ответ, это борьба с симптомами, а не с причиной: magic_quotes_gpc. Отключите их, и вам больше никогда не придется беспокоиться о подобных вещах.

Ответ №2:

Это связано с магическими кавычками
Лучше отключить эту раздражающую старую функцию и забыть об этих проблемах.
Вы можете отключить, следуя этим инструкциям.