JavaScript函数在JSON结果到达之前返回

时间:2012-04-21 09:05:33

标签: jquery

function GetId() {
    var id;    
    $.post("/Edit/CreateId", function (data) {
        id = data;
    });    
    return id;
}

但它在id从服务器返回之前返回;所以id未定义。

这有什么解决方法吗?

2 个答案:

答案 0 :(得分:3)

post()方法是异步的,因此它的success方法会在结果出现时触发,并且在此之前不会阻止GetId函数的其余部分。

要获得(可能)期望的行为,您可以将id值分配给全局变量(错误选择),或者将其余功能作为回调函数传递(使用id作为参数)直接到post success函数:

function GetId( cb ) { 
    $.post("/Edit/CreateId", function (data) {

        // rest of your program logic will be executed here
        cb( data );

    });    
}

答案 1 :(得分:2)

您始终可以传入回调或使用匿名函数。它可以工作,但可能会有点不方便。我不知道你的其他功能如何协同工作。

function GetId(callback) { 
    $.post("/Edit/CreateId", function (data) {
        var id = data;
        callback(id)
    });    
}

使用匿名函数的示例:

GetId(function(id){
    //Do what you need to do.
});