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

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

有什么解决方法吗?

4

2 回答 2

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

    });    
}
于 2012-04-21T09:11:30.910 回答
2

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

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

匿名函数的示例用法:

GetId(function(id){
    //Do what you need to do.
});
于 2012-04-21T09:08:50.840 回答