发送前jsonp没有触发?

时间:2010-05-05 15:44:46

标签: jquery ajax 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”没有被调用。因此用户将无法看到加载动画。

这有什么解决方法吗?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

jQuery JSONP的

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

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