0

私はこのajax呼び出し機能を持っています。

function saveData(ip)
{

    $JQ.ajax({

     type: "POST",

     url: "all_actions.php",

     data: 
     {
         page_url:document.URL,
         ip_address:ip 
     },

     success: function(responce)
     {

         if(responce)
         {
             var newtoken;
             newtoken=responce;
             return newtoken;
         }
     }
    });
}

それから私は別の機能を持っています

 function getToken()
{
    var ip=myip
    var mytoken;
    mytoken=saveData(ip);
    alert(mytoken);

}

私のトークンはアラートで未定義です.savedata応答でnewtoken変数をアラートすると、アラートボックスに正しい値が返されます.なぜその値を返すと、mytokenに割り当てられません.

それは何か時間の遅れの問題ですか.??

君の力が必要...

4

3 に答える 3

1

asynchronous通話から戻ることはできません。

関数内で戻りデータを消費する必要がありsuccessます。何をするにしても、ハンドラーtoken内にそのコードを記述します。success

success: function(responce)
 {

     if(responce)
     {
         var newtoken;
         newtoken=responce;

         // Global variable
         sourceid = newtoken;

         return newtoken; // This won't work
     }
 }

また

 function getToken()
{
    var ip=myip
    var mytoken;
    mytoken=saveData(ip); // This won't return any data
    alert(mytoken); // This won't give you anything useful

}
于 2013-01-23T11:27:18.967 に答える
1

こんにちは友人 これは私が探していたソリューションです。

    function saveData(ip)
{

    return $JQ.ajax({

     type: "POST",

     url: "all_actions.php",

     data: 
     {
         page_url:document.URL,
         ip_address:ip 
     },
     async: false,

    }).responseText;
}
function getToken()
{
    var ip=myip
    var mytoken;
    mytoken=saveData(ip);
    return mytoken;
}
于 2013-01-23T11:48:09.170 に答える
0

AJAXの最初の「A」は「非同期」です。AJAXリクエストが完了する前に、アラートが実行されています。success: function()jQueryのor.done()関数内の応答でやりたいことは何でも処理する必要があります。

success: function(responce)
{
    if(responce)
    {
        var newtoken = responce;

        // Work here with newtoken...
    }
 }
于 2013-01-23T11:26:01.797 に答える