Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.08.2011, 13:40
Аспирант
Отправить личное сообщение для Kotakota Посмотреть профиль Найти все сообщения от Kotakota
 
Регистрация: 12.07.2011
Сообщений: 71

Как с помощью 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'] которая будет содержать этот словарь!
Что можно здесь сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 15.08.2011, 13:58
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

$.ajax({ 
  type: "GET", 
  dataType: 'jsonp', 
  data: {id:{"key1":'value1',"key2":'value2'}},
  url: 'http://localhost/jsonp/', 
  success: function (data) { 
   alert(data); 
  }, 
});
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2011, 14:09
Аспирант
Отправить личное сообщение для Kotakota Посмотреть профиль Найти все сообщения от Kotakota
 
Регистрация: 12.07.2011
Сообщений: 71

Сообщение от devote Посмотреть сообщение
$.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"
Ответить с цитированием
  #4 (permalink)  
Старый 15.08.2011, 14:28
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

А это:
Сообщение от Kotakota
500 INTERNAL SERVER ERROR
ни о чём не говорит? Ошибка сервера же.
Ответить с цитированием
  #5 (permalink)  
Старый 15.08.2011, 14:33
Аспирант
Отправить личное сообщение для Kotakota Посмотреть профиль Найти все сообщения от Kotakota
 
Регистрация: 12.07.2011
Сообщений: 71

Да, исправил уже.
Я все пытался взять переменную $_GET['id'] из предыдущего примера...
А как теперь взять этот словарь из $_GET на серверной стороне?
Имени у него то нет!
Ответить с цитированием
  #6 (permalink)  
Старый 15.08.2011, 16:44
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

$_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'])

Последний раз редактировалось B@rmaley.e><e, 15.08.2011 в 16:49.
Ответить с цитированием
  #7 (permalink)  
Старый 16.08.2011, 08:20
Аспирант
Отправить личное сообщение для Kotakota Посмотреть профиль Найти все сообщения от Kotakota
 
Регистрация: 12.07.2011
Сообщений: 71

Спасибо!
Переменную в этом случае можно поймать как:
$_GET['id[key1]'] или $_GET['id[key2]']

может еще кому будет полезно.
Есть еще вопрос.
Так как в JSOP для отправки данных на сервер используется метод GET, то разве он не ограничен в 255 символов?
Пробовал отправлять больше, все работает!
Нашел еще по этому вопросу:
Причиной тому было непонятно откуда взявшееся убеждение в том, что максимальная длина URL, регламентированная стандартом HTTP, составляет 256 символов. В действительности это далеко не так (ложное воспоминание о числе 256 скорее всего было порождено SQL-типом VARCHAR или чем-то подробным). HTTP формально не лимитирует длину URL, но ограничение на нее накладывают реализации этого протокола.
А как в данный момент с этим обстоят дела?

Последний раз редактировалось Kotakota, 16.08.2011 в 08:28.
Ответить с цитированием
  #8 (permalink)  
Старый 16.08.2011, 09:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Kotakota
Спасибо!
Переменную в этом случае можно поймать как:
$_GET['id[key1]'] или $_GET['id[key2]']
хм странно, а так чтоль не работает?:
$_GET['id']['key1']
Сообщение от Kotakota
HTTP формально не лимитирует длину URL, но ограничение на нее накладывают реализации этого протокола.
А как в данный момент с этим обстоят дела?
А почему не используешь post? Зачем именно get? отправляй постом, данные будут храниться в переменной $_POST
Ответить с цитированием
  #9 (permalink)  
Старый 16.08.2011, 13:17
Аспирант
Отправить личное сообщение для Kotakota Посмотреть профиль Найти все сообщения от Kotakota
 
Регистрация: 12.07.2011
Сообщений: 71

Кажется меня обманули...
Маны которые я читал про JSONP говорили, что в связи с особенностями вызова через <script src="...."> данные могут передаваться только методом GET.
Попробовал через POST, прекрасно работает...
Ответить с цитированием
  #10 (permalink)  
Старый 16.08.2011, 14:03
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Kotakota
в связи с особенностями вызова через <script src="....">
Сообщение от Kotakota
Попробовал через POST
Интересно, каким образом вам это удалось?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема парсинга json с помощью jquery frolvict jQuery 15 16.09.2011 22:35
как передать данные из json в названия параметров shultz1988 Общие вопросы Javascript 2 20.07.2011 11:15
Как передать массив? remitmaster Общие вопросы Javascript 6 17.09.2008 12:47
Как передать фокус флешке на странице? dArky Общие вопросы Javascript 3 10.08.2008 01:03
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11