Как обработать объект JSON из $ .getJSON с событием jQuery Click? - PullRequest
0 голосов
/ 17 сентября 2011

Я не уверен, что это глупый вопрос ... Я пытаюсь отсортировать массив JSON, используя событие щелчка jQuery. Ниже приведен упрощенный HTML-код, который, как я думал, должен работать:

<SCRIPT type='text/javascript'>

function results(json) {
// display unsorted results in $('#results')
}

$('#sort').click(function (json) {
// sort and display results in $('#results')
});

var query = some_query;
var json = new Object();
$.getJSON(query, results);

</SCRIPT>

<A href='javascript:void(0)' id='sort'>Sort</A>
<DIV id='results'></DIV>

Я не получаю ответа после нажатия на ссылку Сортировка. Когда я заменяю функцию сортировки на alert (json), я получаю ошибку json is undefined . Я что-то упускаю здесь?

Дальнейшее обновление:

Я изменил код, и это должно работать. Спасибо всем за ваш вклад:)

<SCRIPT type='text/javascript'>

function results(json) {
// display unsorted results in $('#results')
$('#sort').click(function() {sort(json);});
}

function sort(A) {
var B = A.sort(sorting()); // function to sort the array
results(B);
}

var query = some_query;
$.getJSON(query, results); // triggered by listener

</SCRIPT>

<A href='javascript:void(0)' id='sort'>Sort</A>
<DIV id='results'></DIV>

Ответы [ 2 ]

0 голосов
/ 17 сентября 2011

В обработчике кликов вы ожидаете "json" в качестве аргумента. Так что он ищет его в области аргументов. Вы определили "json" как глобальную переменную, но он не найдет ее там, потому что вы ищете ее в качестве аргумента.

Так что вам нужно либо передать "json" обработчику, либо удалить ожидание аргумента.

0 голосов
/ 17 сентября 2011

Вам просто нужно внести пару изменений:

<SCRIPT type='text/javascript'>

function results(data, textStatus, jqXHR) {
  // display unsorted results in $('#results')
  var json = data;
}

$('#sort').click(function () {
  var query = some_query;
  $.getJSON(url, query, results);
});

</SCRIPT>

<A href='javascript:void(0)' id='sort'>Sort</A>
<DIV id='results'></DIV>

Ваша функция results будет вызвана при получении успешного ответа JSON с URL-адреса, на который вы отправляете запрос $.getJson().

...