2

我有以下问题:使用 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完成请求,然后才返回结果呢?

4

1 回答 1

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);
});

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

于 2013-09-04T15:44:35.917 回答