2009-12-22 2 views
0

Я думал об использовании что-то вроде:Передача сложных данных по URL с изяществом

<script src="http://www.example.com/?key={"param":"value"}"> 

Как вы можете видеть в приведенном выше примере с JSON отформатированной строки передается по Src URL. Пример, конечно, не работает, потому что и строка JSON, и тег сценария используют двойные кавычки.

Вот несколько решений, которые я могу думать:

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

  2. Использование &quot; вместо»Проблема - делает. ЦСИ URL трудно читать

  3. Используйте альтернативу JSON формат обмена данными, который не использует двойные кавычки Проблема -.. Я не могу думать о хорошем кандидате.

что вы думаете?

ответ

1

Вы должны использовать encodeUriComponent, а затем декодировать значение на сервере (на каком языке вы используете на сервере?).

+0

Спасибо за отличное предложение! Тем не менее, я ищу решение, которое не использует JavaScript. –

+0

Я сделал предположение, что вы строили src, используя javascript (это JSON). Если вы не используете javascript, то что вы используете? Это генерируется на сервере? Для чего это? (Я спрашиваю, потому что у меня может быть другой вариант для вас). –

+0

Теги сценария будут генерироваться флэш-приложением и будут использоваться для встраивания гаджетов/компонентов веб-сайта.Возможна связь между флеш-файлами и javascript, и в конечном итоге я могу использовать метод, который вы предлагаете, но я бы предпочел, чтобы не было javascript-решения. –

0

В подобных решениях, одиночные кавычки отлично, так что я бы рекомендовал.

Хорошо, что это решение состоит в том, что он отличает vars от атрибутов HTML с двойными кавычками.

1

Насколько сложны данные? Если это просто пары ключ-значение, то почему бы не использовать обычную кодировку URL-адреса?

<script src="http://www.example.com/?param=value&otherparam=othervalue"> 
+0

Он становится достаточно сложным. В какой-то момент это выглядит как «param»: «value», {[{«param»: «value», «param»: «value»}, {«param»: «value», «param»: value "}]}} –

1

Посмотрите на то, как URL-адрес структурированы для Google Charts - они дают некоторые довольно хорошие советы.

1

Другим вариантом будет urlencode только часть JSON. Я не уверен, как вы строить эти URL-адреса, но если это вручную просто взять:

{"param":"value",{[{"param":"value","param":"value"},{"param":"value","param":"value"}]}} 

И в Firebug называют «побег» на эту строку, которая дает вам:

%7B%22param%22%3A%22value%22%2C%7B%5B%7B%22param%22%3A%22value%22%2C%22param%22%3A%22value%22%7D%2C%7B%22param%22%3A%22value%22%2C%22param%22%3A%22value%22%7D%5D%7D%7D 

таким образом, вы бы иметь URL сценария, такие как:

<script src="http://www.example.com/?key=%7B%22param%22%3A%22... 

Те процента шестнадцатеричные коды заводятся обратно в фактические байт на вашем веб-сервере, так что вы можете просто идти вперед и JSON-синтаксический «ключ» GET параметр и иметь хороший хэш/массив вложенных состав.

+0

Спасибо! Это интересный подход. Однако для целей, которые я задаю, важно, чтобы URL-адрес был легко читаем люди. –

Смежные вопросы