与jsonp同步AJAX

时间:2013-09-04 15:33:49

标签: jquery ajax jsonp

我遇到以下问题:使用jsonp(http://api.jquery.com/jQuery.ajax/,异步部分)时,无法在$ .ajax中关闭异步模式。所以代码

module = (function($)
{
    var result = null;

    var request = function(inputData)
    {
        $.ajax({
           url: "http://some.site",
           type: "post",
           data: inputData,
           dataType: "jsonp",
           success: function(response)
           {
                result = response;
           } 
        });

        return result;
    }
})($);

console.log(module.request());

将导致" null"在第一次调用时,在第二次调用的实际数据中。 那么如何让javascript等待ajax完成请求并且只有在返回结果之后呢?

1 个答案:

答案 0 :(得分:1)

这是不可能的。您必须重新组织代码才能异步工作。在这里,我会为你做的。

var module = (function($) {
    var request = function(inputData) {
        return $.ajax({
           url: "http://some.site",
           //type: "post",
           data: inputData,
           dataType: "jsonp"
        });
    }
    return { request: request };
})($);

module.request().done(function(result){
    console.log(result);
});

还修正了其他一些小错误,我认为那些只是复制粘贴问题。