2014-11-20 4 views
3

Я немного потерян в данный момент, так как мой код работает, но моя таблица не интересует. xDauto update dynatable with AJAX/JSON

Я загружаю данные из своего db в таблицу, и я хочу, чтобы она была «автоматически обновлена» каждые три секунды. Мои данные JSON верны, и js-console отображает обновленные данные. Но моя таблица не хочет отображать ее, поэтому мне нужно обновить всю страницу. Однако я не хочу этого делать.

Вот мой код (HTML + JS):

<script> 
$(document).ready(function() { 
    setInterval(function() {`` 
    $.ajax({ 
     url: "myStuff.php", 
     success: function(data) { 
      console.log(data); 

      myRecords = $.parseJSON(data); 
      $("#dynatable").dynatable({ 

       dataset: { 
        records: myRecords 
       } 
      }); 
     } 
    }); 
    }, 3000); 
}); 


<table id="dynatable"> 
    <thead> 
    <th>test1</th> 
    <th>test2</th> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

PHP:

$response = array(); 

    while ($zeile = mysqli_fetch_array($db_erg, MYSQL_ASSOC)) { 


    $response [] = array(
     "test1" => $zeile['wasd'], 
     "test2" => $zeile['wasdf'] 
    ); 

} 

echo json_encode($response); 

Когда я добавить данные в свою базу данных возвращаемые данные JSON обновляется, я вижу его в JS-консоли. Проблема в том, что моя таблица не хочет отображать ее, она просто показывает «старые» данные.

Любые предложения по его решению?

--------------------------------------------- ----------------

EDIT:

Я получил его сейчас! This помог мне решить мою проблему. Спасибо за помощь! :) Вот мой код:

$(document).ready(function() { 
    setInterval(function() { 
     $.ajax({ 
      url: "myStuff.php", 
      success: function(data) { 
       console.log(data); 

       var myRecords = $.parseJSON(data); 

       var dynatable = $('#dynatable').dynatable({ 
        dataset: { 
         records: myRecords 
        } 
       }).data('dynatable'); 

       dynatable.settings.dataset.originalRecords = myRecords; 
       dynatable.process(); 
      } 
     }); 
    }, 3000); 
}); 
+0

Я не knwo dinatable но несколько таблица JQuery плагин необходимости «обновление» триггер, чтобы показать новые результаты –

+0

Удалить parseJson, в официальном документе они используют непосредственно JSON –

ответ

1

этот код может также обновить таблицу.

+0

Спасибо ребят за помощь, но это не работает. Данные есть и обновлены, но если я удалю parseJSON, данные не будут отображаться, так как dynatable нуждается в массиве для отображения данных (я думаю). Без parseJSON код не работает, то таблица показывает "неопределенными" везде в таблице – Skar

+0

davidtall

+0

Просто хотел набрать реальное быстро, причина, по которой это не работает, заключается в том, что dynatable считает коллекцию 'settings.dataset.records' частью рабочего набора для текущего вида таблицы (поэтому после сортировки, фильтрации, разбиения на страницы , и т.д.применяется), поэтому он использует 'settings.dataset.originalRecords' как первозданный источник, применяет свои операции, а затем сохраняет результаты в' settings.dataset.records', перезаписывая все, что было там раньше. Если вы хотите изменить исходный набор данных для таблицы, замените 'setting.dataset.originalRecords' и назовем' process() ', остальное будет выполнено для вас. – jangosteve