Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? (https://javascript.ru/forum/jquery/20764-json-ili-jsonp-dlya-zaprosov-na-drugojj-server-metod-get-dlya-dlinnykh-soobshhenijj.html)

Kotakota 16.08.2011 19:02

JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений?
 
Привет.
Сразу объясню суть задачи:
Есть два сервера, назовем их: example1.com и example2.com
С сервера example1.com на сервер example2.com должны передаваться данные. Формат выбрал json. Так - как он достаточно прост в структуре, и в следствии этого обладает высокой скоростью передачи.
Начал смотреть, что выбрать, JSON или JSONP?
Почитав статей понял, что только JSONP обладает возможностью кросдоменных запросов.
И вот тут момент один!
$.ajax({
		type: "POST",
		url: 'http://localhost/json',
		data: 'id=5',
		dataType: "json",
		success: function(response) {
			alert('Привет: '+response.hello);
  		}
	});

Это обычный JSON, отправляемый методом POST.
Ответ от сервера (словарь) обрабатываем с помощью success.
А теперь JSONP:
$.ajax({ 
  type: 'GET', 
  dataType: 'jsonp', 
  data: 'id=5',
  url: 'http://localhost/jsonp/', 
  success: function (response) { 
     alert('Привет: '+response.hello);
  } 
});

Если JSON и JSONP работают по одной технологии, то есть вставляют тег <script src="...">, взаимодействуют с сервером (отправляют и получают ответ), то в чем вообще смысл JSONP? К тому же теряется явное преимущество в виде отправки методом POST, которое есть у JSON! Конечно мы приобретаем + в плане безопасности. В JSONP у нас есть callback, который будет обрабатывать ответ от сервера так, как нам нужно.
И самое важное для меня!
Мне нужно будет отправлять сообщения, максимальная длинна которых примерно 1000 символов. Насколько я помню, длина GET=256 символам!
После тестов оказалось, что методом GET можно отправить намного больше 256 символов, о чем я писал в предыдущем топе http://javascript.ru/forum/jquery/20...tml#post120816.
Ну что то я расписался блин... :nono:
Подводя итог, вопросы у меня такие:
1. Что нужно использовать для решения моей задачи? JSON или JSONP
Если можно с примером! А то я совсем запутался...
2. Какие мысли по поводу передачи длинных сообщений (~1000) методом JSONP, через GET (если именно он мне нужен). Потянет?

Kolyaj 16.08.2011 19:14

Цитата:

Сообщение от Kotakota
JSON или JSONP

Вы сравниваете тёплое с мягким. JSON -- способ кодирования данных, JSONP -- способ получения данных с сервера, использующий JSON в качестве способа кодирования. Между ними нельзя выбирать.

melky 16.08.2011 19:51

есть куча способов пообщаться через домены

Kotakota 17.08.2011 07:29

Эта куча способов размыта сильно.
Хотя я понимаю, что Илья хотел показать все способы, а Вы уже выбирайте, что хотите.
Сейчас есть два кандидата:
CORS и JSONP
У CORS есть куча преимуществ и один огромный минус, который выражается в отсутствии нормальной поддержки его браузерами.
JSONP - нет возможности передовать данные методом POST.
Я представляю, если у меня будет передаваться такое, например:
$.ajax({ 
  type: 'GET', 
  dataType: 'jsonp', 
  data: {id:{'key1':'value1fdsfdsfdsfsdfsdfdsfdsfsdfsdsdfsfsdsdffssdffsd......и т.д. около 1000 символов!','key2':'value2'}},
  url: 'http://localhost/jsonp/', 
  success: function (data) { 
   // ... 
  } 
});

Ну и вообще JSONP больше подходит для получения информации, а не для записи.
Стою на распутье, не знаю, что выбрать для решения своей задачи :(

Magneto 17.08.2011 09:16

В прошлой твоей теме кто-то говорил что можно слать POST-запросы на сторонний сервер и получать от него ответы, вот спрашивай у этого человека как это делается.

B@rmaley.e><e 23.08.2011 23:12

На основе этого способа можно сделать получение данных после POST запроса.


Часовой пояс GMT +3, время: 15:24.