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 变量,它会在警报框中给出正确的值。为什么如果我返回该 avlue 它没有分配给 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 请求有机会完成之前,您的警报正在运行。您需要处理您希望对jQuery的success: function()or函数中的响应执行的任何操作:.done()

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

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