jtable один столбец / поле в таблице обновления

Я использую Jtable для бронирования событий. В сочетании с PHP, MySQL. У меня вопрос, есть ли способ просто перезагрузить каждые 10 секунд одного столбца. Точно у меня как то так

Checkbox  ID  Event Reservations
    +     4   ev1   22
    -     5   ev2   19

Я хотел бы, чтобы колонка резервирований перезагружалась каждые 10 секунд, чтобы вошедший в систему пользователь мог видеть изменения. Теперь я начал работать с перезагрузкой всей таблицы, но это не то, что мне действительно нужно, потому что каждый пользователь может зарегистрировать только 9 событий, и мне нужно иметь флажки слева. После перезагрузки всей таблицы мои флажки не работают, как ожидалось. Так есть ли способ перезагрузить только один столбец? Мой код прямо сейчас:

window.setInterval(function(){      
    $('#Events').jtable('reload');                                          
}, 10000);

Любая помощь или предложение будут оценены.

1 ответ

Решение

Я нашел способ решить эту проблему:

Сначала создайте новое поле в JS следующим образом:

test: {
        title: 'test',
        display: function (data) {
        var $div = $('<div id="test"">'+data.record.id+'</div>');
        return $div;
        }
},

Затем создайте функцию, которая будет запускаться каждые 10 секунд, и сделайте AJAX-запрос:

function UpdateRes(){

            $.ajax({
                url: 'Actions.php?action=update',
                type: 'post',
                data: '&kiu='+$kiu,
            }).success(function(data) {
                var jsondata = JSON.parse(data);
                $.each(jsondata.Records, function(i, item) {
                    $('.jtable tr.jtable-data-row').each(function(){
                        if($(this).attr('data-record-key')==item.id){
                            $(this).find('div').html( item.reservations );
                        }
                    })

                });

            }); 
        }

window.setInterval(function(){      
    UpdateRes();
}, 10000);

Пусть ваш ответ JSON будет выглядеть так:

{"Result":"OK",
"Records":
[
{"0":"111","id":"111","1":"20","reservations":"20"},
{"0":"127","id":"127","1":"20","reservations":"20"},
{"0":"133","id":"133","1":"20","reservations":"20"},
{"0":"134","id":"134","1":"20","reservations":"20"},
{"0":"135","id":"135","1":"20","reservations":"20"},
{"0":"326","id":"326","1":"20","reservations":"20"}
]}

И в конце концов в Actions.php сделайте ваш запрос в try catch:

else if($_GET["action"] == "update")
{

    //Get records from database
    $result8 = mysqli_query($con,
   "SELECT l.id,(l.max-l.reserviert) as reservations 
   FROM td_res l WHERE 
   l.kiu='" . mysqli_real_escape_string($con,$_POST["kiu"]) . "';");

    //Add all records to an array
    $rows8 = array();
    while($row8 = mysqli_fetch_array($result8))
    {
        $rows8[] = $row8;
    }

    //Return result to jTable
    $jTableResult = array();
    $jTableResult['Result'] = "OK";
    $jTableResult['Records'] = $rows8;
    print json_encode($jTableResult);
}
Другие вопросы по тегам