我試圖運行一個jQuery/Javascript函數來搜索外部JSON文件,如果給定的變量是JSON的用戶名之一,則返回true
。Jquery/Javascript跳過線?
這是我有: (給出的變量player
等於a
)
function loggedIn(player) {
var result = false;
var liurl = "liplay.json";
$.getJSON(liurl, function (json) {
$.each(json, function (key, value) {
if (value.username == player) {
alert();
result = true;
} else {}
});
});
return result;
}
外部JSON文件(liplay.json)是這樣的:
[{"username":"a"},{"username":"q"}]
對於一些原因,代碼總是返回false。
我試着一次一步地運行它,並且我發現無論出於何種原因,Chrome都運行了前幾行代碼,直到$.getJSON(liurl, function(json){
,然後跳到return result;
。我不知道爲什麼它跳過運行if/else語句的部分。任何想法,爲什麼會發生這種情況,以及如何解決它?
不要在loggedIn函數中返回結果,只需在getJSON的成功回調中執行任何您需要的操作。這是因爲它異步執行。 – 2012-04-04 01:49:41
我相信,一旦你得到你的JSON反序列化,你可以簡單地檢查陣列沒有循環它: return json [player]!= undefined; – 2012-04-04 11:24:51