因爲getJSON方法是異步的。這是怎麼回事...
getInviteLink : function() { // this function is called...
var me = this,
invite_url; // happens right away
$.getJSON('get_invite_code.json', function(data) {
// Step 2, these statements don't happen until later
// -- when the response is received
console.log(data.invite_url); // this
invite_url = data.invite_url;
}); // Step 1. the getJSON is called right away
console.log(invite_url) // this happens right after the
// the getJSON is called, but before
// it gets a response. Thus no data when the log
// statement is invoked
return invite_url; // also no data (yet) when this return statement
// is executed
},
添加要解決你的軟件,你需要認識到,你不能做的事情invite_url
從服務器接收到的JSON響應之後,直到。 - 如果您的客戶端出現網絡問題或服務器問題,可能永遠不會收到。
您可以將函數傳遞給您的getJSON調用。該函數將使用invite_url。同時,您可以爲您的客戶做其他事情。
如果你的軟件沒有任何東西可以做,直到你得到響應,然後設置一個忙指標(一個旋轉的圓圈或者其他東西),然後啓動json請求並且當你得到響應時讓函數取消忙指標背部。
有關更多信息,請參閱jQuery json文檔。
建議修改? Inser成功的回報? – AnApprentice 2012-07-08 02:21:32
對不起,但你不能返回值。你不能建立一個同步函數,它返回異步請求的值。您可以做的最好的方法是使用成功回調中的值。 – 2012-07-08 02:22:33