2014-12-03 56 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