Javascript.RU

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

Сообщение от Kolyaj Посмотреть сообщение
Интересно, каким образом вам это удалось?
$.ajax({ 
  type: 'POST', 
  dataType: 'jsonp', 
  data: {
'id=5'
    },
  url: 'http://localhost/jsonp/', 
  success: function (data) { 
   alert(data.man1); 
  } 
});

Все работает.
Хотя почти во всех манах читал, что JSONP не работает с POST.
Ответить с цитированием
  #12 (permalink)  
Старый 16.08.2011, 14:14
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А откуда вы знаете, что этот код делает внутри jQuery? Тут два варианта: либо он отправляет POST, но не JSONP, либо он отправляет JSONP, но не POST.
Ответить с цитированием
  #13 (permalink)  
Старый 16.08.2011, 14:17
Аспирант
Отправить личное сообщение для Kotakota Посмотреть профиль Найти все сообщения от Kotakota
 
Регистрация: 12.07.2011
Сообщений: 71

Сообщение от Kolyaj Посмотреть сообщение
А откуда вы знаете, что этот код делает внутри jQuery? Тут два варианта: либо он отправляет POST, но не JSONP, либо он отправляет JSONP, но не POST.
Я думал об этом.
Даже где то читал, что если указан метод POST для jsonp, то jQuery автоматически переделывает его в GET.
Сейчас гуглю на эту тему...

[Добавлено]
> From: Gregory Foster
> I am attempting to POST some JSON data across domains via
> jQuery's low- level .ajax() call; since it is cross-domain, I
> use the JSONP dataType.
That's your problem right there: You can't do that.
Cross-domain JSONP isn't AJAX at all. It doesn't use XMLHttpRequest. It's
nothing more than a dynamic script element that loads JavaScript code.
You can't do a POST with a dynamic script element. Where would you put the
POST data?
I don't know what the $.ajax code is trying to do - maybe it should fail in
a more informative way. It will fail one way or another regardless.
-Mike


и еще лог FireBug моего запроса:
Host localhost
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept text/javascript, application/javascript, */*
Accept-Language ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset windows-1251,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With XMLHttpRequest - Это, если я не ошибаюсь GET!
Referer http://localhost/
Content-Length 80

Вроде как то так. Не работает jsonp с методом POST!

Последний раз редактировалось Kotakota, 16.08.2011 в 14:26.
Ответить с цитированием
  #14 (permalink)  
Старый 16.08.2011, 14:54
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Kotakota
X-Requested-With XMLHttpRequest - Это, если я не ошибаюсь GET!
Это тут вообще ни при чём, это дополнительный заголовок XHR запроса, который jQuery вставляет всегда.
Ответить с цитированием
  #15 (permalink)  
Старый 16.08.2011, 14:58
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

JSONP хорош при обращении к серверам отличным от сервера с которого была загруженна страница. И на сторонний сервер браузер может послать только GET-запрос (политика безопасности). Подчеркну, важная особенность JSONP, это запросы к чужим серверам.

Если же работа происходит только с одним сервером то посылайте и получайте данные так как Вам будет удобно. Нужно отправить большой текстовый кусок ? Отправляете POST-запросом. Хотите в ответ получить JSON, JSONP или XML? Используйте их.
Ответить с цитированием
  #16 (permalink)  
Старый 16.08.2011, 15:20
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Magneto
И на сторонний сервер браузер может послать только GET-запрос (политика безопасности)
Вообще-то, послать можно и POST. Вот только не существует способа получить ответ на такой запрос.
Ответить с цитированием
  #17 (permalink)  
Старый 16.08.2011, 15:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от B@rmaley.e><e
Вот только не существует способа получить ответ на такой запрос.
Существует. Разумеется, если к обоим серверам доступ есть. Но если сторонний сервер не захочет, то и на get запрос получить ответ нельзя.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема парсинга 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