Пользуюсь json_encode
давно, проблем пока не было. Сейчас я работаю со скриптом загрузки и пытаюсь вернуть некоторые данные JSON после загрузки файла.
У меня есть следующий код:
print_r($result); // <-- This is an associative array
echo json_encode($result); // <-- this returns valid JSON
Это дает мне следующие результаты:
// print_r result
Array
(
[logo_url] => http://mysite.com/uploads/gallery/7f/3b/f65ab8165d_logo.jpeg
[img_id] => 54
[feedback] => Array
(
[message] => File uploaded
[success] => 1
)
)
// Echo result
{"logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg","img_id":"54","feedback":{"message":"File uploaded","success":true}}
Может ли кто-нибудь сказать мне, почему json_encode
добавляет косую черту?
Обновить
@Квентин сказал, что что-то происходит между json_encode
и .parseJSON
и он прав.
Выполнение alert(data.toSource());
дает мне результат:
({response:"{\"logo_url\":\"http:\\/\\/storelocator.com\\/wp-content\\/uploads\\/gallery\\/7f\\/3b\\/71b9520cfc91a90afbdbbfc9d2b2239b_logo.jpeg\",\"img_id\":\"62\",\"feedback\":{\"message\":\"File uploaded\",\"success\":true}}", status:200})
И это недопустимый JSON. Он также добавляет, status:200
и я понятия не имею, откуда это взялось.
Может быть, что-то Plupload bind
делает с моими возвращенными данными?
Это мой js-скрипт:
uploader.bind('FileUploaded', function(up, file, data) {
alert(data.toSource());
$('#' + file.id + " b").html("100%");
});
Решение проблемы
Просто используйте параметр «JSON_UNESCAPED_SLASHES» (добавлен после версии 5.4).
json_encode($array,JSON_UNESCAPED_SLASHES);
Комментариев нет:
Отправить комментарий