2013-12-15 48 views
0

我有這樣的腳本:jQuery的AJAX:返回一個值

function getUsername() { 
    $.ajax("http://one2xs.com/index.php", { 
     success: function(a) { 
      console.log($(a).find("#left").html().match(/Je bent ingelogd als ([ ^A-z0-9]*)/)[1]); 
      return $(a).find("#left").html().match(/Je bent ingelogd als ([ ^A-z0-9]*)/)[1]; 
     } 
    }); 
} 

alert(getUsername()); 

在控制檯登錄,它說我的用戶名: console log

但警報「未定義」,我不知道爲什麼。我已經在做一些調試,但它不會工作。有人知道我的用戶名爲什麼在控制檯日誌中工作,但不在警報中?

謝謝。

回答

1

由於它是一個ajax調用,它是異步的。所以你的警報在從服務器返回呼叫之前運行。

將警報置於成功功能,它將工作。

+0

那麼,它不是提醒用戶名的想法,我只提醒測試。我稍後需要用戶名。 – user2897922

+0

然後你需要在你的回撥中設置。 – Jason

0

您需要等待$.ajax呼叫的'成功'。所以做這樣的事情:

var username 
function getUsernameFromServer() { 
    $.ajax("http://one2xs.com/index.php", { 
     success: function(a) { 
      username = $(a).find("#left").html().match(/Je bent ingelogd als ([ ^A-z0-9]*)/)[1]; 
      console.log("got username: " + username) 
     } 
    }); 
} 
getUsernameFromServer() 

function getUsername() 
    if (username != null) { 
     return username 
    } else { 
     //de give it a second then try again 
     setInterval(function(){ 
      getUsername() 
     },1000); 
    } 
} 

這不是確切的,但給你的主要概念。 var username是最重要的部分。