JSONP не стреляет до отправки? - PullRequest
4 голосов
/ 05 мая 2010

Я работаю над проектом для вызова веб-сервиса из другого домена, используя $ .ajax с dataType, установленным в jsonp.

    $.ajax({
        type: "GET",
        url: testService.asmx,
        async: true,
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",

        beforeSend: function (XMLHttpRequest) {
            alert('Before Send'); //Nothing happnes
        },
        success: function (response) {
            alert('Success'); //this was fired
        },
        complete: function (XMLHttpRequest, textStatus) {
            alert('After Send'); //this was fired
        }
    });

Проблема в том, что у меня есть ... загрузка анимации, которую я хочу отобразить во время обработки запроса веб-службы. Я попытался использовать «beforeSend:», чтобы показать анимацию загрузки, но кажется, что «beforeSend» не запускается.

Анимация работает нормально, когда приложение находится в одном домене (с использованием jsonp), но когда я перемещаю приложение на другой сервер, все работает, кроме «beforeSend» не вызывается. Таким образом, пользователи не смогут видеть анимацию загрузки.

Есть ли обходной путь для этого?

Ответы [ 2 ]

4 голосов
/ 05 мая 2010

В междоменных запросах JSONP не используется XMLHTTPRequest, поэтому поток событий отличается.

Вы можете просто показать анимацию загрузки сразу после вызова $ .ajax.

0 голосов
/ 19 января 2011

beforeSend реализация jQuery JSONP еще не завершена. Решение пока что, используйте:

jQuery(document).ajaxStart(function(){alert('Before Send');}); // For all XHRs
$('#id').ajaxStart(function(){alert('Before Send');});         // For unique XHR

до $.ajax({...});.

...