2010-05-05 3 views
4

저는 dataType이 jsonp로 설정된 $ .ajax를 사용하여 다른 도메인에서 webservice를 호출하는 프로젝트를 진행 중입니다.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({...}); 전에.

관련 문제