#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:
Это связано с магическими кавычками
Лучше отключить эту раздражающую старую функцию и забыть об этих проблемах.
Вы можете отключить, следуя этим инструкциям.