из Mysql в JSON
Добрый день.
недавно начал разбираться с JS и PHP, так что возможны неточности в описании моих действий:) Помогите с таким вопросом. Из mysql при помощи php (файл getjson.php) функции json_encode() формирую JSON объекты.
...
$var = array();
$sql = "SELECT * FROM planer";
$result = mysqli_query($con, $sql);
while($obj = mysqli_fetch_object($result)) {
$var[] = $obj;
}
echo '{"planer":'.json_encode($var).'}'; //формируем объекы
...
Далее в используя Jquery преобразую JSON в js объекты и вывожу в виде таблицы.
var url="getjson.php";
$("#jsondata tbody").html("");
$.getJSON(url, function (data) {
$.each(data.planer, function (i, planer) {
// console.log(planer);
var newRow =
"<tr>"
+ "<td class='td_id'>" + planer.idPlaner + "</td>"
+ "<td class='td_date'>" + planer.DatePlaner + "</td>"
+ "<td class='td_time'>" + planer.TimePlaner + "</td>"
+ "</tr>";
$(newRow).appendTo("#jsondata tbody");
});
});
Скрипт работает хорошо. Но т.к объекты js перебираются в анонимных функциях не получается сохранить преобразованные объекты отдельно. Хочу я это сделать к примеру для фильтрации результата запроса уже на клиенте, без обращения к серверу. подскажите как это лучше всего сделать? |
Вариант 1: Очистить таблицу, отсортировать данные, заново отрендерить таблицу.
Вариант 2: При рендеринге создавать хэш-таблицу (первичный ключ) : (DOM-элемент строки). Сортируем данные. Далее проходимся по отсортированному массиву и расставляем строки таблицы на новые позиции (в получении строк нам поможет созданная хэш-таблица. |
doitden,
оберните весь код в единую область видимости:
(function(){
var JSONdata; //объявляем глобальный объект данных
var url="getjson.php";
$("#jsondata tbody").html("");
$.getJSON(url, function (data) {
JSONdata = data.planer; //заполняем объект
$.each(data.planer, function (i, planer) {
// console.log(planer);
var newRow =
"<tr>"
+ "<td class='td_id'>" + planer.idPlaner + "</td>"
+ "<td class='td_date'>" + planer.DatePlaner + "</td>"
+ "<td class='td_time'>" + planer.TimePlaner + "</td>"
+ "</tr>";
$(newRow).appendTo("#jsondata tbody");
});
});
})();
теперь getJSON можно вызвать только раз, если JSONdata пуст. |
| Часовой пояс GMT +3, время: 20:37. |