【问题标题】:JQuery, Ajax, Json, PHP multidimensional associative arrayJQuery、Ajax、Json、PHP 多维关联数组
【发布时间】:2013-10-22 10:16:35
【问题描述】:

我正在尝试遍历通过 jquery/ajax 从 php 文件中检索到的多维关联数组。 php 数组如下所示:

$pink =  array ( "newarray" => array 
( "varietyOne" => array
("name" => "Poublout", "year" => 2002),
"varietyTwo" => array
("name" => "Gerarde", "year" => 2003),
"varietyThree" => array
("name" => "Encore", "year" => 1956),
"varietyFour" => array
("name" => "Toujours", "year" => 1957),
"varietyFive" => array
("name" => "J'aime", "year" => 1958),
"varietySix" => array
("name" => "Alisee", "year" => 2001)
),
"varNumber" => array
("varietyOne",
"varietyTwo",
"varietyThree",
"varietyFour",
"varietyFive",
"varietySix"
)
);
print json_encode($pink);

js 看起来是这样的:

$(document).ready(function () {
    $('.clicker').click(function () {
        $.ajax({
            type: 'GET',
            url: 'another.php',
            dataType: 'json',
            success: function (brandon) {
                for (var i = 0; i < brandon.newarray.length; i++) {
                    var catName = brandon.varNumber[i];
                    for (var wineName in brandon.newarray[i][catName]) {
                        console.log(branond.newarray[i][catName][wineName]);
                    }
                }
            }
        });
    });
});

这里是json而不是php:

{"newarray":
    {"varietyOne":{"name":"Poublout","year":2002},
     "varietyTwo":{"name":"Gerarde","year":2003},
     "varietyThree":{"name":"Encore","year":1956},
     "varietyFour":{"name":"Toujours","year":1957},
     "varietyFive":{"name":"J'aime","year":1958},
     "varietySix":{"name":"Alisee","year":2001}},
 "varNumber":
    ["varietyOne","varietyTwo","varietyThree","varietyFour","varietyFive","varietySix"]}

我已经尝试了几个不同的循环,改变了我的数组值,但我什么都做不了。我可以调用数组中的单个键=值对,但我不能让它遍历所有值。
谢谢你。

还有console.log(brandon)的结果

Object { newarray={...}, varNumber=[6]}
newarray
Object { varietyOne={...}, varietyTwo={...}, varietyThree={...}, more...}
varietyFive
Object { name="J'aime", year=1958}
varietyFour
Object { name="Toujours", year=1957}
varietyOne
Object { name="Poublout", year=2002}
varietySix
Object { name="Alisee", year=2001}
varietyThree
Object { name="Encore", year=1956}
varietyTwo
Object { name="Gerarde", year=2003}
varNumber
["varietyOne", "varietyTwo", "varietyThree", 3 more...]
0   "varietyOne"
1   "varietyTwo"
2   "varietyThree"
3   "varietyFour"
4   "varietyFive"
5   "varietySix"

所以,循环现在输出到控制台,但我希望文本显示在我的网站上。通常我使用 $('#somediv').append(brandon.(whateverelse); 并且信息会出现。在这种情况下它不会出现。

【问题讨论】:

  • 您应该将header('Content-type: application/json'); 添加到您的PHP 中,尽管这可能对您当前的问题没有影响。
  • 我得到一个对象,其中列出了我的数组中的信息。
  • 你可以添加json而不是生成json的php吗?
  • php 在什么时候?在我的数组之前还是之后?
  • 无论何时添加都无所谓,header() 无论如何都会应用于响应的开头。

标签: php jquery ajax json multidimensional-array


【解决方案1】:

您不应该需要 varNumber 数组。

你只需要:

for (var index in brandon.newarray) {
    console.log(index);
    console.log(brandon.newarray[index]);
    console.log(brandon.newarray[index]['name']); // or brandon.newarray[index].name
    console.log(brandon.newarray[index]['year']); // or brandon.newarray[index].year
}

在这种情况下,索引将为varietyOnevarietyTwo 等。

【讨论】:

  • 好的,很酷,但是现在我如何才能真正将它输出到我的 html 中,在一个空的 div 中?通常我使用 $('#emptydiv').append(brandon);但是这个方法现在对我不起作用。
  • 我看到你用你想要输出的内容更新了问题(排序)。无论如何,有一百万种方法可以从表中输出结果......这里有一个例子,一个单行:for (var index in brandon.newarray) $('#somediv').append('&lt;div&gt;' + brandon.newarray[index]['name'] + ': ' + brandon.newarray[index]['year'] + '&lt;/div&gt;');
  • 是的,抱歉,有一点连接问题。它工作得很好。非常感谢。这是否意味着我不能简单地附加整个函数/对象/数组?我必须在数组中调用一个单独的 index=key 吗?
  • 嗯,你可以做很多事情。例如,您可以编写一个函数,该函数接受一个数组并打印一行数据,然后从循环中调用该函数:for (var index in brandon.newarray) displayRow(brandon.newarray[index]); 您的问题有点含糊,但我必须说...
  • 好的,抱歉含糊不清。谢谢回答!我想现在就这些了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多