У меня возникла проблема с передачей json-строки обратно в php-скрипт для обработки.
У меня есть строка json, которая была создана с помощью dojo.toJson (), который содержит a, и выглядит так:
[{"id":"2","company":"My Company / Corporation","jobrole":"Consultant","jobtitle":"System Integration Engineer"}]
Когда я передаю строку обратно в php-скрипт, она получает chopped в / и создает неправильную строку json, что означает, что я не могу преобразовать ее в php-массив.
Каков наилучший способ избежать / в этой строке? Я смотрел на регулярные выражения и делал string.replace (), однако мое регулярное выражение не настолько сильное, и я не уверен, есть ли лучшие способы сделать это?
Большое спасибо
Вам не нужно делать ничего особенного для представления /
в JSON – строка может содержать любой символ, кроме "
или (если не используется для запуска escape-последовательности) \
.
Возможно, проблема заключается в следующем:
(Я бы сделал ставку на то, что это последний из этих вариантов).
Я бы начал использовать такой инструмент, как LiveHttpHeaders или Charles Proxy, чтобы точно определить, какие данные отправляются на сервер.
(Я также хотел бы расширить вопрос с помощью кода, который вы используете для создания запроса, и кода, который вы используете для его анализа на другом конце).
\/
. Взгляните сюда . Документацию очень легко читать, кратким и понятным. Но unescaped /
должен все еще быть действительным в строке JSON, так что, может быть, ваша ошибка находится где-то в другом месте?
ОК. Так или иначе.
При передаче переменных в PHP не использовать JSON – это полезно для передачи переменных другим способом.
Вместо этого вам лучше использовать метод http://api.dojotoolkit.org/jsdoc/1.3/dojo.objectToQuery и на стороне PHP разложить стандартные переменные PHP $_GET
.
EDIT: Хорошо, я тоже здесь «потерял в лесу», но вот подсказка – проверьте, нет ли здесь каких-либо правил mod_rewrite. Кажется, похоже.
Кроме того, если вы можете отправить мне URL-адрес, который дал вам 404 (вы можете вырезать часть домена, меня интересует имя файла сценария и все последующие), возможно, я смогу дать вам более подробный ответ.
Чтобы быть ясным, предпочитаете ли вы отправлять JSON на PHP или использовать обычные значения форм, это вопрос предпочтения. Это / должно / работать в любом случае. Похоже, что вы не кодируете URL-адрес JSON на стороне клиента, поэтому серверная сторона обрабатывает / как разделитель пути. В этом случае его borked перед json_decode добирается до него.
поэтому, попробуйте encodeURIComponent (dojo.toJson (материал))
json_encode () используется для удаления косых черт. как это:
prompt> json_encode(json_decode('"A/B"')); string(6) ""A\/B""
JSON_UNESCAPED_SLASHES был добавлен в PHP5.4 для подавления такого поведения.