0

関数 rk() は、Ajax 呼び出しからランダムなキーを返します。パラメーター l は長さを表します。私の質問は、「k」変数で Ajax の結果から戻り値を取得するにはどうすればよいですか?

var k = rk(6);

function rk(l) { //l stands for length
    $.ajax({
        url : 'ajax_lib.php',
        type : 'POST',
        data : 'k=1&l=' + l,
        success : function(r) {
            return r;
        }                     
    });            
}
4

2 に答える 2

2

Ajax は非同期処理を使用します。つまり、要求がサーバーに送信されると、応答を待たずに残りのステートメントを実行し続けます。

したがって、あなたの場合、リクエストがサーバーに送信されると、( return ステートメントがないため) value が返され、変数rkには value が含まれます。undefinedkundefined

この問題を解決するには、$.ajax によって返されるpromiseオブジェクトを使用します。

rk(6).done(function(r){
    //do what ever you want to do with r
});

function rk(l) {  //l stands for lenght           

    return $.ajax({                  
        url : 'ajax_lib.php',                 
        type : 'POST',                
        data : 'k=1&l=' + l                 
    });  

}
于 2013-03-28T15:24:21.043 に答える
0

解決策は

function rk(myVariable, l) {  //l stands for lenght           

    $.ajax({                  
        url : 'ajax_lib.php',                 
        type : 'POST',                
        data : 'k=1&l=' + l,              
        success : function(r)    {               
            myVariable = r;
        }                                   
    });  

}

呼び出す代わりに、呼び出すr=rk(l) ことができますrk(r, l)

于 2013-03-28T15:24:33.887 に答える