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

しかし、IDがサーバーから戻ってくる前に戻ります。 idは未定義です。JSON結果が到着する前にJavaScript関数が返される

この問題を回避する方法はありますか?

+0

'$ .ajax()'成功メソッドを使用します。 – elclanrs

+0

この投稿をご覧ください:http://stackoverflow.com/questions/10155503/jquery-having-issue-with-global-variable-inside-function-ajax-function/10155553#10155553 –

答えて

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

    });  
} 
関連する問題