JQuery JSON читать и печатать $ .getJSON - PullRequest
0 голосов
/ 26 января 2011

Это что-то новое для меня, поэтому, пожалуйста, будьте терпеливы.JQuery & json - я использую json & serialize для "возрастов" в php, но только попал в JQ.Я хочу передать данные между доменами, поэтому массив json кажется мне лучшим, но как его отобразить, например,

скажем, у меня есть такой массив json, созданный в php на имени страницы examplearray.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');
});
});
});

В приведенном выше примере нет никаких "установленных" ключей, если вы следуете этому, ноТеперь добавьте ключ к массиву, как этот

$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 ]

1 голос
/ 26 января 2011

Вам нужно добавить ? после обратного вызова, и вам нужно обернуть свой код этим обратным вызовом на стороне сервера:
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){
0 голосов
/ 26 января 2011

Чтобы понять, с какими переменными вы должны работать, вы можете попробовать запустить свой код в отладчике, таком как «Консоль Javascript» в Chrome или Firebug в Firefox. Поместите точку останова в функцию $ .each. Посмотрите на свои локальные переменные, и вы должны увидеть все доступные вам структуры данных. Привыкните к использованию инструментов отладки в браузерах. Они экономят ваше время.

Чтобы ответить на ваш вопрос более подробно, есть хорошие примеры доступа к данным с использованием $ .each () здесь: http://api.jquery.com/jQuery.getJSON/

"item" теперь является объектом javascript в вашем примере. Вы можете использовать его как таковой (item.attribute)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...