将结果从jquery ajax请求返回到变量而不是触发函数

时间:2011-08-29 21:41:22

标签: javascript jquery

我正在使用jquery试验MCV。我正在调用api,它返回数据 - 我想要做的是将数据返回到变量而不是在我的模型中调用additioanl函数。虽然(the_data = result),但以下代码并不能实现我的目标。我有什么想法可以实现这个目标吗?

function lookForSomething()
{
    var the_data = $.ajax({ type: "GET", 
                            url: TheUrl, 
                            dataType: "jsonp", 
                            success: function(result) { return result; } 
                            });
    return the_data;
}

非常感谢, Ĵ

2 个答案:

答案 0 :(得分:1)

如果理解正确,您希望TheUrl返回的数据是lookForSomething的返回值。

从技术上讲,可以使用async选项执行此操作:

function lookForSomething()
{
    var the_data;
    $.ajax({ type: "GET", 
                            url: TheUrl, 
                            dataType: "jsonp", 
                            async : false,
                            success: function(result) { the_data = result; } 
                            });
    return the_data;
}

我强烈建议你这样做。它不像Javascript,它会在用户运行时锁定用户的浏览器。最好将回调传递给函数并从success调用它。

答案 1 :(得分:0)

您可能正在寻找deferred objects

function lookForSomething()
{
    var the_data;
    $.when(
        $.ajax({ type: "GET", 
                            url: TheUrl, 
                            dataType: "jsonp", 
                            success: function(result) { the_data=result; } 
                            });
    ).done(function() {
        return the_data;
    }).fail(function() {
        return '';
    });
}

请记住,这仍然是异步的,因此当您拨打var ddd = lookForSomething();时,由于呼叫可能仍在运行,因此ddd将没有您期望的值。我提出$.when()的唯一原因是因为你似乎需要很多依赖。 $.when()允许您等待multiple ajax commands