2014-12-03 51 views
0

我想從每個循環返回一個簡單的信息數組沒有成功。這是我在兩個不同的函數中使用的代碼。從JQuery爲每個循環返回數組

function getUser(uname, callback) { 
var u = "http://itsuite.it.brighton.ac.uk/john10/ci227/a1/whois.php?username=" + uname; 
return $.get(uname, {}, callback); 
} 

function parseUserInfo(usrname) { 
getUser(usrname, function(data) { 
    var x = new Array(); 
    $(this).find("user").each(function() { 
     x['username'] = $(this).find("username").text(); 
     x['firstname'] = $(this).find("firstname").text(); 
     x['surname'] = $(this).find("surname").text(); 
     return x; 
    } 
} 
} 

所有我得到當我使用它是這樣的:

var dat = parseUserInfo("guest"); 

使用的console.log時是不確定的(DAT),所以可能會有人告訴我,我要去哪裏錯了嗎?

非常感謝!哦,順便說一句,我已經看過在這裏和其他地方的其他解決方案,但至今找不到對我有用的任何東西,所以請不要'這個線程是重複的'或'它已經在這裏回答'鏈接因爲這將使我回到原點並提出這個問題毫無意義!

回答

2

x正在返回到getUser()函數。您需要在getUser()之外定義並返回xparseUserInfo()

所以,你的代碼應該是這個樣子:

function parseUserInfo(usrname) { 
    var x = new Array(); 
    getUser(usrname, function(data) { 
    $(this).find("user").each(function() { 
     x['username'] = $(this).find("username").text(); 
     x['firstname'] = $(this).find("firstname").text(); 
     x['surname'] = $(this).find("surname").text(); 
    }); 
    }); 
    return x; 
} 
+0

正確的,如果你使用'返回,而不是'回報x'它FALSE'只想打破'$ .each'循環。 – skobaljic 2014-12-03 16:31:17

+0

是的,但我該怎麼做?這是我的問題所在。 – 2014-12-03 16:36:38

+0

Geordie:檢查我的更新答案。 – 2014-12-03 16:42:06