发送前jsonp没有触发?

我正在开发一个项目,使用$ .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”没有被调用。 因此用户将无法看到加载动画。

这有什么解决方法吗?

跨域JSONP请求不使用XMLHTTPRequest,因此事件流是不同的。

您可以在调用$ .ajax后立即显示加载动画。

beforeSend jQuery JSONP的实现正在进行中。 现在的解决方案,使用:

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

$.ajax({...});