2015-06-17 6 views
-2

Я вызываю метод getContent рекурсивно и строгая значения в реальном времени в HTML-таблице. Но после рекурсивного вызова ajax новые результаты присоединяются к существующей таблице, а не обновляют таблицу. как я могу очищать данные таблицы каждый раз, прежде чем я заново заполню таблицу?JQuery загружает данные HTML в реальном времени

HTML:

 <table id="personDataTable" class="table table-bordered"> 
     <tbody> 
      <tr> 
       <th>workflow_job_id</th> 
       <th>Domain Id</th> 
       <th>Entity Id</th> 
       <th>Type</th> 
       <th>Status</th> 
       <th>Task Status</th> 

      </tr> 
     </tbody> 
     </table> 

Сценарий:

function getContent(){ 
//ajax call to retrieve the data from DB. 
drawTable(dat); 
} 

function drawTable(data) { 

     setTimeout(getContent, 60000); 
     for (var i = 0; i < data.resultSet.length; i++) { 
      drawRow(data.resultSet[i]); 
     } 
    } 

    function drawRow(rowData) { 
     var row = $("<tr />") 

     $("#personDataTable").append(row); //this will append tr element to table... keep its reference for a while since we will add cels into it 
     row.append($("<td>" + rowData.workflow_job_id + "</td>")); 
     row.append($("<td>" + rowData.domain_id + "</td>")); 
     row.append($("<td>" + rowData.entity_id + "</td>")); 
     row.append($("<td>" + rowData.type + "</td>")); 
     row.append($("<td>" + rowData.status + "</td>")); 
     row.append($("<td>" + rowData.taskstatus + "</td>")); 
    } 
+0

Почему вы удивлены тем, что содержание в настоящее время добавляется при использовании метода .append() ? – j08691

+0

Остановить добавление строк в таблицу? –

+0

Да, я знаю об append(), но ищем альтернативу для этого же. что-то вроде $ ("# personDataTable"). empty() перед тем, как добавить строки в существующую таблицу. –

ответ

0

Почему вы не удалить строку перед добавлением, например:

function getContent(){ 
//ajax call to retrieve the data from DB. 
drawTable(dat); 
} 

function drawTable(data) { 

    setTimeout(getContent, 60000); 
    $("#personDataTable").find("tr:gt(0)").remove(); 
    for (var i = 0; i < data.resultSet.length; i++) { 
     drawRow(data.resultSet[i]); 
    } 
} 

function drawRow(rowData) { 
    var row = $("<tr />") 

    $("#personDataTable").append(row); //this will append tr element to table... keep its reference for a while since we will add cels into it 
    row.append($("<td>" + rowData.workflow_job_id + "</td>")); 
    row.append($("<td>" + rowData.domain_id + "</td>")); 
    row.append($("<td>" + rowData.entity_id + "</td>")); 
    row.append($("<td>" + rowData.type + "</td>")); 
    row.append($("<td>" + rowData.status + "</td>")); 
    row.append($("<td>" + rowData.taskstatus + "</td>")); 
} 
+0

Нет. Его все равно то же самое. –

+0

@ user3746601 Он отлично работает для меня. См. [Demo] (http://jsfiddle.net/vikashvverma/2k7xupnz/) – Vikash

+0

У вас есть только одна запись в массиве данных. Но у меня есть несколько записей. Если у вас несколько строк данных, он не работает. –

0

попробуйте изменить

function drawRow(rowData) { 
    var row = $("<tr />") 

    $("#personDataTable").append(row); //this will append tr element to table... keep its reference for a while since we will add cels into it 
    row.append($("<td>" + rowData.workflow_job_id + "</td>")); 
    row.append($("<td>" + rowData.domain_id + "</td>")); 
    row.append($("<td>" + rowData.entity_id + "</td>")); 
    row.append($("<td>" + rowData.type + "</td>")); 
    row.append($("<td>" + rowData.status + "</td>")); 
    row.append($("<td>" + rowData.taskstatus + "</td>")); 
} 

в

function drawRow(rowData) { 
    var row = $("<tr />") 

    $("#personDataTable").find('tr').remove(); 
    $("#personDataTable").append(row); //this will append tr element to table... keep its reference for a while since we will add cels into it 
    row.append($("<td>" + rowData.workflow_job_id + "</td>")); 
    row.append($("<td>" + rowData.domain_id + "</td>")); 
    row.append($("<td>" + rowData.entity_id + "</td>")); 
    row.append($("<td>" + rowData.type + "</td>")); 
    row.append($("<td>" + rowData.status + "</td>")); 
    row.append($("<td>" + rowData.taskstatus + "</td>")); 
} 

, чтобы удалить старые строки перед добавлением

+0

Я устал от этого, но не работал. Он удаляет все «tr», кроме последнего в данных. –

+0

Я добавил возможное исправление, но боюсь, что он удалит строку заголовка ... – oMiKeY

Смежные вопросы