2012-04-21 52 views
0
function GetId() { 
    var id;  
    $.post("/Edit/CreateId", function (data) { 
     id = data; 
    });  
    return id; 
} 

但是它在id从服务器返回之前返回;所以id是不确定的。JavaScript函数在JSON结果到达之前返回

这有什么解决方法吗?

+0

使用'$。阿贾克斯()''success'方法。 – elclanrs 2012-04-21 09:08:23

+0

看看这篇文章:http://stackoverflow.com/questions/10155503/jquery-having-issue-with-global-variable-inside-function-ajax-function/10155553#10155553 – 2012-04-21 09:12:56

回答

2

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

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

实施例的使用具有匿名功能:

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

post()方法是异步的,因此其success方法将火,当结果是存在的,不遮挡GetId函数的其余部分,直到然后。

为了让您的(可能)所需的行为,你可以直接分配id值到一个全局变量(坏的选择),或者传递的功能回调函数(与id作为参数),其余的postsuccess功能:

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

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

    });  
}