jQuery AJAX函数奇怪的行为

时间:2012-01-27 18:42:03

标签: jquery ajax

我在这里有一个相当奇怪的场景,希望有人可能有一些见解。

我有这个功能:

function get_jsonp(data){
    $.ajax({
        dataType: 'jsonp',
        data:data,
        jsonpCallback:'pr',
        url:'http://example.com/api/'
     });
//alert("test");
}

$("a").live('click',function(e){
    $("#dialog").show();
    $(".hideable").hide();
    window.location = $(this).attr('href');
    info = get_info();
    get_jsonp(info,'pr');
});

在jQuery 1.4.1下,这种方法一直很好。

在jQuery 1.7.1第一次调用它没有问题然后当我点击调用它的项目时我没有得到任何结果但是如果我取消评论该警报它工作正常

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

只要将ajax帖子提交给服务器,如果您使用同步请求,该方法就会退出。发生的事情是get_jsonp()之后在 ajax调用之前执行的代码实际上已经完成。通过使用alert(),您可以在方法退出之前添加足够的时间来完成调用。

不幸的是,jsonp不支持同步请求。

考虑使用.ajaxComplete()方法,或者如果您可以在get_jsonp方法中执行后续代码,请捕获其中一个事件:

function get_jsonp(data){
    $.ajax({
        dataType: 'jsonp',
        data:data,
        jsonpCallback:'pr',
        url:'http://example.com/api/',
        success: function(){
            // Do something when successfully complete.
        }
    });
}