Одинарные кавычки в JSON из PHP вызывают проблемы - PullRequest
0 голосов
/ 11 июня 2011

ПРИМЕЧАНИЕ: Это был совершенно другой вопрос, пока я не понял, где на самом деле проблема.

Моя текущая проблема заключается в том, что я пытаюсь вывести JSON из PHP для использования в jQuery.Я делаю это кросс-домен, поэтому я использую "JSONP".Я сузил проблему до того факта, что в моем JSON есть одинарные кавычки, поэтому при выводе с помощью функции обратного вызова я получаю слишком много одинарных кавычек.
Я пытался вызвать str_replace("'","\'",$value) в PHP, и кажется, чтовыведите как \\' в моем JSON, а не \', который явно не читается jQuery (хотя онлайн-валидаторы JSON говорят, что JSON действителен.

Так что мне нужно знать, как получить только одинкосая черта в моей строке внутри PHP, а не две косые черты.

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Я собираю вот что:

jQuery использует _ в качестве параметра обратного вызова для запросов JSONP. Он автоматически добавит ?_=jQuery<random_numbers>, в основном говоря серверу, чтобы он вызывал это уникальное имя функции при возврате. Таким образом, с недавнего времени (в течение последнего года я хочу сказать) .ajax позаботился о создании функции обратного вызова для вас, а затем "перенаправил" ее в функцию, указанную вами в свойстве success.

Кроме того, ваш код PHP использует $_GET['callback'], тогда как теперь он должен использовать $_GET['_'] (чтобы оставаться в курсе JQuery и того, что он отправляет).

«jQuery не был вызван» - это просто jQuery, уведомляющий вас о том, что ожидаемый обратный вызов не был включен в ответ, и он пытался убедиться, что он вызывается.

Краткий ответ (как я его понимаю), ссылка $_GET['_'] вместо $_GET['callback'] для удовлетворения jQuery.

0 голосов
/ 12 августа 2013

попробуйте использовать это в своем PHP:

echo $_GET['callback'] . '(' . json_encode($your_array_data) . ')';

С уважением.

...