Я видел много примеров того, как использовать jQuery и .each () для анализа массивов json. Я хочу использовать функцию .each () для создания json. Я получаю от пользователя информацию о текстовых полях, которые будут использоваться при вызове ajax для сортировки таблицы. Я использую .each (), чтобы найти все текстовые поля, которые имеют допустимый ввод, а затем я хочу поместить эти данные в тип данных json и отправить их через ajax в SQL-запрос. Я не уверен, что мне нужен объект против массива, и из тех данных, которые я анализировал до сих пор, мой объект, похоже, не содержит всего, чего я ожидал.
Я создал глобальный объект для хранения данных, но в предыдущем посте в сети показаны скобки, когда все, что я видел для массива, это parens (), а объект - это фигурные скобки {}. Так что мой глобальный «объект» (так как я не знаю, что вызывать []) на данный момент выглядит так:
var jsonFilter = [];
Для функции .each (), которая просматривает данные пользователя «onkeyup» для фильтрации списка:
$("input:text[id^='filter']").live({
focusin: function () {
currentFilter = $(this).val();
$(this).removeClass("filter");
$(this).val("");
},
focusout: function () {
if ($(this).val() == "") {
// If they gave up focus and didn't type anything in the box, restore the text
$(this).addClass("filter");
$(this).val(currentFilter);
}
},
keyup: function () {
$("input:text[id^='filter']").each(function () {
if ($(this).val() != "" && !$(this).hasClass('filter')) {
//alert("filterBy: " + $(this).attr('id') + "\nfilterValue: " + $(this).val());
jsonFilter.push({ filterBy: $(this).attr('id'), filterValue: $(this).val() });
}
});
//alert("Done with .each()");
filterReport(jsonFilter);
}
});
А для массива, который выводит содержимое jsonFilter:
function filterReport(_jsonFilter) {
$("#jsonFilterLength").html(_jsonFilter.length);
//$("#filterTest").html("");
for (var i = 0; i < _jsonFilter.length; i++) {
$("#filterTest").append("Index: " + i + ", filterBy: " + _jsonFilter[i]["filterBy"] + ", filterValue: " + _jsonFilter[i]["filterValue"] + "<br /><br />");
}
}
Когда я просматриваю html в div "#jsonFilterLength", я вижу, что длина увеличивается, поэтому, похоже, она хранит дополнительные данные. Но HTML в div "#filterTest" показывает только данные для текущего текстового поля, которое я набираю, а не то, что я ожидаю, чтобы весь массив json содержал, поскольку я пытаюсь разрешить фильтрацию по нескольким текстовым вводам одновременно.
С уважением,
Скотт