2010-05-05 10 views
4

Я работаю над проектом, чтобы вызвать веб-сервис из другого домена, используя $ .ajax с dataType, установленным в jsonp.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» не получает вызов. Таким образом, пользователи не смогут увидеть анимацию загрузки.

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

ответ

4

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

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

0

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

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

перед тем $.ajax({...});.

Смежные вопросы