JQuery JSON读取并打印$ .getJSON

时间:2011-01-26 07:02:19

标签: jquery arrays json

这对我来说是新的,所以请耐心等待。 JQuery& json - 我一直在使用json&在PHP中序列化“年龄”,但只是进入JQ。我想传递数据跨域 - 所以json数组似乎对我来说最好但我如何显示它,例如。

说我有一个像这样的json数组在页面名称examplearray.php上的php创建,位于http://domain1.com/examplearray.php

    $catarray = array('Animal Life','Business & Finance','Cars & Vehicles','Entertainment & Arts','Food & Cooking','Health','History, Politics & Society','Hobbies & Collectibles','Home & Garden','Humor & Amusement','Jobs & Education','Law & Legal Issues','Literature & Language','Relationships','Religion & Spirituality','Science','Shopping','Sports','Technology','Travel & Places'); 
$callback =  json_encode($catarray);

我知道我可以从另一个域http://domain2.com

这样称呼它
$(document).ready(function(){
$.getJSON("http://domain1.com/examplearray.php?callback=",
function(data){
$.each(data, function(i,item)
{  
// WHAT DO I put in here to read the array? i.e. what are the keys etc. //
// I assume the display is something like $('#element').html('something');
});
});
});

在上面的示例中,如果您遵循该键,则没有“set”键,但现在像这样添加一个键到数组

$catarray = array('keyname' => array('Animal Life','Business & Finance','Cars & Vehicles','Entertainment & Arts','Food & Cooking','Health','History, Politics & Society','Hobbies & Collectibles','Home & Garden','Humor & Amusement','Jobs & Education','Law & Legal Issues','Literature & Language','Relationships','Religion & Spirituality','Science','Shopping','Sports','Technology','Travel & Places'));

非常感谢,谢谢。

2 个答案:

答案 0 :(得分:1)

您需要在回调后添加?,并且需要使用该回调服务器端包装代码:
examplearray.php:

<?php
// your data generation routine
$results = array('Animal Life','Business &amp; Finance','Cars &amp; Vehicles','Entertainment &amp; Arts','Food &amp; Cooking','Health','History, Politics &amp; Society','Hobbies &amp; Collectibles','Home &amp; Garden','Humor &amp; Amusement','Jobs &amp; Education','Law &amp; Legal Issues','Literature &amp; Language','Relationships','Religion &amp; Spirituality','Science','Shopping','Sports','Technology','Travel &amp; Places');
if(isset($_REQUEST['callback'])) {
    $json_callback_func = $_REQUEST['callback'];
    echo $json_callback_func . '('.json_encode($results).')';
}
?>

你的JS:

$(function() {
    $ul = $('ul');
    $.getJSON("http://domain1.com/examplearray.php?callback=?", function(data){
        $.each(data, function(k,v){
            $ul.append("<li>" + v + "</li>");
        });
    });
});

既然你的数组没有索引,它就是一个数值数组,所以键k只是索引。

现在,如果你有密钥,比如你的第二个例子,你可能想要使用嵌套循环,或者如果你有确切的案例,那么使用:

$.each(data.keyname, function(k,v){

答案 1 :(得分:0)

要了解您必须使用哪些变量,您可以尝试在Chrome中的“Javascript控制台”或Firefox中的Firebug等调试器中运行代码。在$ .each函数中放置一个断点。查看本地变量,您应该可以看到所有可用的数据结构。习惯在浏览器中使用调试工具。它们为您节省了大量时间。

要更直接地解决您的问题,可以使用$ .each()在这里访问数据的好例子:http://api.jquery.com/jQuery.getJSON/

“item”现在是您示例中的javascript对象。你可以这样使用它(item.attribute)