【问题标题】:Returning array from JQuery For Each Loop从 JQuery For Each Loop 返回数组
【发布时间】:2014-12-03 16:23:25
【问题描述】:

我试图从 for each 循环中返回一个包含一些简单信息的数组,但没有成功。这是我在两个不同函数中使用的代码。

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) 时是否未定义,所以有人可以告诉我哪里出错了吗?

非常感谢!哦,顺便说一句,我已经在这里和其他地方查看了其他解决方案,但还没有找到任何适合我的解决方案,所以请不要“此线程是重复的”或“它已在此处回答”链接,因为这会让我回到原点让问这个问题毫无意义!

【问题讨论】:

    标签: jquery arrays foreach


    【解决方案1】:

    x 正在返回到 getUser() 函数。您需要在parseUserInfo() 中的getUser() 之外定义并返回x。

    所以你的代码应该是这样的:

    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;
    }
    

    【讨论】:

    • 正确,如果你使用return false 而不是return x 它只会打破$.each 循环。
    • 是的,但我该怎么做呢?这就是我的问题所在。
    • 不幸的是,这不起作用,在您的回答中,没有任何功能被 );最后,在每一点我都试着把 return x;之后,我刚刚返回 parseUserInfo 未定义,您能否将代码修改为它的外观? - 除此之外,我关闭了自己的 getUser 和 .each 函数,仍然得到相同的结果,除了一个但返回了一个空数组。控制台记录:[]
    • 我通过关闭函数解决了语法错误。尝试在我的代码的第 3 行和第 4 行之间放置一个console.log(data);。让我们看看您从$.get() 请求中获得了什么数据。
    • Undefined 和 [] 在单独的行中是控制台给出的所有内容,这是一场噩梦,我不明白返回数据数组有多难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多