2014-12-03 7 views
0

Я пытаюсь вернуть массив некоторой простой информации из a для каждого цикла без успеха. Вот код, который я использую в двух разных функциях.Возвращаемый массив из 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 (Дат), так что кто-то может сказать мне, где я собираюсь здесь не так?

Большое спасибо! Oh Btw Я рассмотрел другие решения здесь и в другом месте, но пока не могу найти ничего, что сработает для меня, поэтому, пожалуйста, не «эта нить является дубликатом» или «здесь ответили здесь», ссылки, которые возвратят меня к квадрату и задавать этот вопрос бессмысленно!

ответ

2

x возвращается к функции getUser(). Вам необходимо определить и вернуть x за пределами getUser() в parseUserInfo().

Так что ваш код должен выглядеть следующим образом:

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

Правильно, если вы используете 'вернуть false' вместо' возвращения x' было бы просто сломать '$ .each' цикл. – skobaljic

+0

Да, но как мне это сделать? Вот о чем я и говорил. –

+0

Geordie: Проверьте мой обновленный ответ. –

Смежные вопросы