Как с помощью JSON передать серверу словарь с данными?
Привет!
Есть код: $.ajax({ type: "GET", dataType: 'jsonp', data: 'id = 5', url: 'http://localhost/jsonp/', success: function (data) { alert(data); }, }); В этом варианте все просто. Отдаем серверу &id=5 А что если я хочу передать в "data:" словарь? Как его присвоить переменной? Что то типа: $.ajax({ type: "GET", dataType: 'jsonp', data: "id = {'key1':'value1','key2':'value2'}", url: 'http://localhost/jsonp/', success: function (data) { alert(data); }, }); Этот вариант не работает. А мне необходимо на серверной стороне взять переменную $_GET['id'] которая будет содержать этот словарь! Что можно здесь сделать? |
$.ajax({ type: "GET", dataType: 'jsonp', data: {id:{"key1":'value1',"key2":'value2'}}, url: 'http://localhost/jsonp/', success: function (data) { alert(data); }, }); |
Цитата:
"NetworkError: 500 INTERNAL SERVER ERROR - http://localhost/jsonp/?callback=jsonp1313402876472&id%5Bkey1%5D=value1&i d%5Bkey2%5D=value2" |
А это:
Цитата:
|
Да, исправил уже.
Я все пытался взять переменную $_GET['id'] из предыдущего примера... А как теперь взять этот словарь из $_GET на серверной стороне? Имени у него то нет! |
$_SERVER['QUERY_STRING']
Или, как вариант: $.ajax({ type: "GET", data: { "id" : JSON.stringify({"key1" : "value1", "key2" : "value2'}) }, url: 'http://localhost/jsonp/', success: function (data) { alert(data); }, }); И на сервере что-то в духе json_decode($_GET['id']) |
Спасибо!
Переменную в этом случае можно поймать как: $_GET['id[key1]'] или $_GET['id[key2]'] может еще кому будет полезно. Есть еще вопрос. Так как в JSOP для отправки данных на сервер используется метод GET, то разве он не ограничен в 255 символов? Пробовал отправлять больше, все работает! Нашел еще по этому вопросу: Причиной тому было непонятно откуда взявшееся убеждение в том, что максимальная длина URL, регламентированная стандартом HTTP, составляет 256 символов. В действительности это далеко не так (ложное воспоминание о числе 256 скорее всего было порождено SQL-типом VARCHAR или чем-то подробным). HTTP формально не лимитирует длину URL, но ограничение на нее накладывают реализации этого протокола. А как в данный момент с этим обстоят дела? |
Цитата:
$_GET['id']['key1'] Цитата:
|
Кажется меня обманули...
Маны которые я читал про JSONP говорили, что в связи с особенностями вызова через <script src="...."> данные могут передаваться только методом GET. Попробовал через POST, прекрасно работает... |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 05:33. |