JSON массив в JQuery вернуть данные не определены - PullRequest
3 голосов
/ 13 апреля 2011

Я пытаюсь получить данные, чтобы постоянно обновлять новости из источника

data.php

$fecha = $_GET['fecha'];
$feed = array();

$result = mysql_query("SELECT * FROM envivo WHERE fecha >= '".$fecha."' ORDER BY fecha DESC");
$existe = mysql_num_rows($result);

if ($existe != 0) {

    while ($data = mysql_fetch_array($result)) {
        $jsondata = array();
        $jsondata['titulo'] = $data['titulo'];
        $jsondata['link'] = $data['link'];
        $jsondata['fuente'] = $data['fuente'];

        $feed[] = $jsondata;
    }

    echo json_encode($feed);
}

live.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Live</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
function restults(data) {
    $(data).each(function() {
        $("#envivo").append("<li>Titulo: " + data.titulo + " Link: " + data.link + " Fuente: " + data.fuente + "</li>");
    });
}
$(document).ready(function(){
    var fecha = Math.round((new Date()).getTime() / 1000);
    setInterval(function() {
        $.ajax({
            data: "fecha="+fecha,
            type: "GET",
            dataType: "json",
            url: "data.php",
            success: function(data){
               restults(data);
            }
        });
    }, 5000);
});
</script>
</head>
<body>
<div id="envivo">
</div>
</body>
</html>

При запуске index.php data.php вызывается через ajax и возвращает что-то вроде этого

[{ "título": "Тест 1302662957" , "ссылка": "HTTP: \ / \ / www.google.com", "Fuente": "Цукер"}, { "título": "Тест 1302662957" , "ссылка": "HTTP: \ / \ / www.google.com", "Fuente": "Цукер"}, { "título": "Тест 1302662631" , "ссылка": "HTTP: \ / \ / www.google.com", "Fuente": "Цукер"}]

В этот момент все в порядке ... сейчас я попытаюсь получить и добавить эти данные

на консоли Firebug

[{ "título": "Тест 1302662957" , "ссылка": "HTTP: \ / \ / www.google.com", "Fuente": "Цукер"}, { "título": "Тест 1302662957" , "ссылка": "HTTP: \ / \ / www.google.com", "Fuente": "Цукер"}, { "título": "Тест 1302662631" , "ссылка": "HTTP: \ / \ / www.google.com", "Fuente": "Цукер"}]

Так что все нормально ... но при использовании

$(data).each(function() {
    $("#envivo").append("<li>Titulo: " + data.titulo + " Link: " + data.link + " Fuente: " + data.fuente + "</li>");
});

я получаю неопределенный для каждого значения ... какие-либо идеи?

заранее спасибо

1 Ответ

8 голосов
/ 13 апреля 2011

$.fn.each() предназначен для перебора элементов dom.Вы хотите $.each(), который перебирает любую общую коллекцию, например, массив объектов.Измените свой код .each() на что-то вроде этого:

$.each(data, function(index, data) {
  $("#envivo").append("<li>Titulo: " + data.titulo + " Link: " + data.link + " Fuente: " + data.fuente + "</li>");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...