чтение JSON из JQuery - PullRequest
       6

чтение JSON из JQuery

0 голосов
/ 28 октября 2010

Привет всем, я пытаюсь прочитать некоторые JSON и сделать 2 вещи. Вставьте некоторые данные JSON в UL. Во-вторых, создайте функцию, которую можно вызывать из тега привязки и отображать другие данные. Давайте попробуем объяснить с помощью моего кода.

Мой JSON выглядит так

[{lakeName:"Lake 1",lakeCode:"111",Readings[["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5],]}{lakeName:"Lake 2",lakeCode:"222",Readings[["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5],]}]

Я пытаюсь заполнить свой список следующим образом

   $(document).ready(function () {
        $.ajax({
            url: "http://theaboveJSONisreturnedFromMyUrl",
            method: 'GET',
            dataType: 'json',
            success: onDataReceived
        });



        var data = [];

        function onDataReceived(series) {

            data = [series];
            $(data).each(function (i, data) {
                $('#myList').append("<li>" + "<a href=\"javascript:GetLake(" + data.lakeCode + ");\">" + data.lakeName + "</a></li>");
            });

        }
    });

          function GetLake(lake) {

          alert('some how get the readings for the clicked lake code e.g. lakeCode 111 and display them here ["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5] );

          }

Теперь я вижу значения в данных, но, кажется, не могу получить доступ к ним, например, через. data.lakeCode

Что я сделал не так?

Любая помощь будет великолепна !!!

Ответы [ 3 ]

0 голосов
/ 28 октября 2010

, если вы не уверены в синтаксисе вашего JSON, просто проверьте его следующим образом: http://www.jsonlint.com/

0 голосов
/ 28 октября 2010

Чтобы быть действительным, вашему JSON необходимо внести следующие изменения ( вы всегда можете проверить правильность с помощью JSONLint здесь ):

  • Запятые между объектами в основном массиве
  • Нет конечных команд в Readings массивах
  • Двойные кавычки вокруг имен членов
  • : между Readings и его значением

Над всем этимдолжно выглядеть так:

[{"lakeName":"Lake 1","lakeCode":"111","Readings":[["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5] ]},{"lakeName":"Lake 2","lakeCode":"222","Readings":[["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5] ]}]
//compared to your current version:
[{ lakeName :"Lake 1", lakeCode :"111", Readings  [["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5],]} { lakeName :"Lake 2", lakeCode :"222", Readings  [["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5],]}]

Кроме того, вместо этого вы должны использовать $.each(), например:

$.each(data, function () {
  $('#myList').append("<li>" + "<a href=\"javascript:GetLake(" + this.lakeCode + ");\">" + this.lakeName + "</a></li>");
});

Или немного лучше, используйте DOMметоды, подобные этому:

$.each(data, function () {
  $('<a />', { href: '#', click: function() { GetLake(this.lakeCode); } })
     .wrap('<li />').parent().appendTo('#myList');
});
0 голосов
/ 28 октября 2010

В вашем JSON есть несколько синтаксических ошибок. Это должно выглядеть так:

[{lakeName:"Lake 1",lakeCode:"111",Readings:[["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5]]},{lakeName:"Lake 2",lakeCode:"222",Readings:[["24-Oct-10",12.5],["24-Oct-10",10.5],["24-Oct-10",15.5]]}]

Некоторые : и , отсутствовали, ненужные , между ними и ненужные ] были в конце.

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