我正在开发一个项目,使用$ .ajax调用来自不同域的web服务,并将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
}
});
问题是我有一个...加载动画,我想在处理Web服务请求时显示。我尝试使用“beforeSend:”来显示加载动画,但似乎“beforeSend”没有被解雇。
当应用程序位于同一个域(使用jsonp)时,动画工作正常但是当我将应用程序移动到另一个服务器时,一切正常,除了“beforeSend”没有被调用。因此用户将无法看到加载动画。
这有什么解决方法吗?
答案 0 :(得分:4)
跨域JSONP请求不使用XMLHTTPRequest,因此事件流程不同。
您可以在调用$ .ajax后立即显示加载动画。
答案 1 :(得分:0)
beforeSend
实现仍在进行中。
现在的解决方案,使用:
jQuery(document).ajaxStart(function(){alert('Before Send');}); // For all XHRs
$('#id').ajaxStart(function(){alert('Before Send');}); // For unique XHR
在$.ajax({...});
之前。