Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JSONP и Post запрос. / 22 сообщений из 22, страница 1 из 1
21.01.2013, 17:49
    #38118491
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
Добрый день.
Подскажите, как передать POST запросом JSON на другой домен
и получить назад калбэк функцию для выполнения у себя, в теле которого тоже json.

Перепробовал кучу примеров, не получается.
Может кто-то уже делал подобные вещи?
Поделитесь работающий кодом.
...
Рейтинг: 0 / 0
21.01.2013, 17:50
    #38118494
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
интересует именно ajax реализация.
...
Рейтинг: 0 / 0
21.01.2013, 17:59
    #38118507
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
JSONP не прокатит.
Какие нафиг примеры? Только ГЕТ.
...
Рейтинг: 0 / 0
21.01.2013, 18:01
    #38118513
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
Как вариант, люди отправляют себе на сервер запрос постом, а дальше курлом сервер отправляет данные на другой домен.
...
Рейтинг: 0 / 0
21.01.2013, 18:12
    #38118529
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
В том то и проблема, что я дергаю именно сервер, и у меня никакого промежуточного сервера нет.
...
Рейтинг: 0 / 0
21.01.2013, 18:14
    #38118539
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
alex2808,

если тот сервер рассчитан на JSONP, то POST передать не получится никак.
...
Рейтинг: 0 / 0
21.01.2013, 18:25
    #38118555
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
Яростный Меч,
Смысл в том, что я могу просить сервис вернуть мне данный в любом формате.
Но переход кросс-доменный, в том то и дело.

т.е. вернуть данные в формате myfunction({test:343443}) без проблем.
Но данные в запросе я должен передавать через РОST, т.к. нежелательно их светит в get строке.
...
Рейтинг: 0 / 0
21.01.2013, 18:28
    #38118561
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
alex2808т.е. вернуть данные в формате myfunction({test:343443}) без проблем.это и есть формат JSONP.

а сам механизм JSONP - создание элемента script и добавление его в документ. содержимое скрипта ("myfunction({test:343443})") может быть подтянуто только GET-запросом, так мир устроен.
...
Рейтинг: 0 / 0
21.01.2013, 18:57
    #38118600
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
...
Рейтинг: 0 / 0
21.01.2013, 19:29
    #38118650
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
Можно отправить полноценный кроссдоменный пост только через ифрейм+contentWindow.name, но сервер должен быть заточен под этот метод. Он должен возвращать html-страницу, в которой есть скрипт, в котором ответ прописывается в window.name.
...
Рейтинг: 0 / 0
21.01.2013, 22:03
    #38118787
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
alex2808,

Короче - никак. Разве что, как я сказал и как повторил skyANA.
...
Рейтинг: 0 / 0
22.01.2013, 11:25
    #38119225
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
AntonariyМожно отправить полноценный кроссдоменный пост только через ифрейм+contentWindow.name, но сервер должен быть заточен под этот метод. Он должен возвращать html-страницу, в которой есть скрипт, в котором ответ прописывается в window.name.
А пример можно где-то увидеть?
...
Рейтинг: 0 / 0
22.01.2013, 12:55
    #38119451
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
тынц
Этот код я не проверял, я нашел быдловариант на хабре и допилил:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
function postData(url, data, callback) {
    var timeOut = 120000, complete = false, defaultResponse = "{}";
    var IFRAME = document.createElement("iframe"), FORM = document.createElement("form");
    var processResponse = function(resp) {
        $(IFRAME).remove();
        var response = decodeURI(resp);
        if (callback) callback(response);
    };
    $(IFRAME).appendTo(document.body).css('display', 'none');
    function onloader() {

        var err = false, name;
        try { name = IFRAME.contentWindow.name }
        catch (e) { err = true; }
        if (err || name==undefined) {
            IFRAME.onload = onloader;
            IFRAME.contentWindow.location = 'about:blank';
            setTimeout(function() {
                if (!complete) {
                    $(IFRAME).unbind();
                    complete = true;
                    processResponse(defaultResponse);
                };
            }, timeOut);
        } else if (IFRAME.contentWindow.name.length == 0) {
            IFRAME.onload = onloader;
            var DOCUMENT = IFRAME.contentWindow.document;
            if (!DOCUMENT.body) DOCUMENT.appendChild(DOCUMENT.createElement('body'));
            $(FORM).appendTo(DOCUMENT.body).attr("action", url).attr("method", "post").attr("accept-charset", "utf-8").attr("enctype", "application/x-www-form-urlencoded");
            for (var x in data) $("<input type='hidden'/>").attr("name", x).val(data[x]).appendTo(FORM);
            FORM.submit();
        } else {
            //alert(IFRAME.contentWindow.name);
            complete = true;
            processResponse(IFRAME.contentWindow.name);
            $(IFRAME).unbind();
        }
    }
    IFRAME.onload = onloader;
    IFRAME.contentWindow.location = 'about:blank';
};
...
Рейтинг: 0 / 0
25.01.2013, 13:03
    #38124513
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
А какая технология позволяет послать кроссдоменный запрос без правки сервиса на сервере?
...
Рейтинг: 0 / 0
25.01.2013, 13:07
    #38124527
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
XDomainRequest, но он еще не везде работает. Точнее, почти нигде.
...
Рейтинг: 0 / 0
25.01.2013, 13:16
    #38124547
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
AntonariyXDomainRequest, но он еще не везде работает. Точнее, почти нигде.Точнее только в IE8+. А в IE10 уже поддерживается стандартизованый XMLHttpRequest Level 2.
И всё равно на сервере надо конфигурацию правильно настроить.
...
Рейтинг: 0 / 0
25.01.2013, 13:20
    #38124554
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
А вот если не можешь оказывать влияние на серверную часть, что тогда посоветуете?
...
Рейтинг: 0 / 0
25.01.2013, 13:37
    #38124605
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
alex2808А какая технология позволяет послать кроссдоменный запрос без правки сервиса на сервере ?

А вот если не можешь оказывать влияние на серверную часть , что тогда посоветуете?Это типа вопросы о разном?
...
Рейтинг: 0 / 0
25.01.2013, 13:58
    #38124661
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
Antonariyalex2808А какая технология позволяет послать кроссдоменный запрос без правки сервиса на сервере ?

А вот если не можешь оказывать влияние на серверную часть , что тогда посоветуете?Это типа вопросы о разном?

А в чем отличие?
Не могу я на сервере ничего править. Есть просто сервис, дернув который (передавая в роst-е XML с данными), я получаю XML в ответ.
...
Рейтинг: 0 / 0
25.01.2013, 14:35
    #38124759
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
alex2808Antonariyпропущено...
Это типа вопросы о разном?

А в чем отличие?Кто здесь?

alex2808Не могу я на сервере ничего править.С этого бы и начинал.
Единственный кроссбраузерный способ оправить обычный пост и получить обычный ответ с другого домена — прокси.
Но это уже советовали.
...
Рейтинг: 0 / 0
25.01.2013, 14:40
    #38124777
alex2808
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
Antonariyalex2808Не могу я на сервере ничего править.С этого бы и начинал.
Единственный кроссбраузерный способ оправить обычный пост и получить обычный ответ с другого домена — прокси.
Но это уже советовали.
Значит прокси.
Но для этого необходимо иметь свою серверную часть, насколько я понимаю, которая будет просто переадресовывать запрос
на нужный мне сервис?
...
Рейтинг: 0 / 0
25.01.2013, 14:49
    #38124798
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSONP и Post запрос.
alex2808, да.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JSONP и Post запрос. / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]