javascript变量未显示正确的值

时间:2013-01-23 11:22:06

标签: javascript ajax

我有这个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);

}

我的令牌在alert中提供undefined。虽然如果我在savedata响应中提醒newtoken变量,它会在alert box中给出正确的值。为什么如果我返回它没有分配给mytoken。

是时间延迟问题。??

需要你的帮助......

3 个答案:

答案 0 :(得分: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

}

答案 1 :(得分: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;
}

答案 2 :(得分:0)

AJAX中的第一个'A'是'异步'。在AJAX请求有机会完成之前,您的警报正在运行。你需要处理你想对jQuery的success: function().done()函数内部的响应做什么:

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

        // Work here with newtoken...
    }
 }