2017-10-24 7 views
0

私はこのAjax呼び出しを使用して、テーブルにデータを取り込みます。ただし、同じコールを再度行うと、新しいデータと古いデータの両方が読み込まれます。新しいデータを読み込む前に古いデータをクリアするにはどうすればよいですか?別の呼び出しの前にajax応答をクリアする方法

$(function() { 
$('#subject_search_btn').click(function() { 
    var student_id = $('#search').val(); 
    var year = $('#year').val(); 
    var term = $('#term').val(); 
    var classs = $('#formclass').val(); 

    $.ajax({ 
     "url": "/search_student_results", 
     "data": {"studentid":student_id, "year":year, "term":term, "formclass":classs}, 
     "type": "get", 
     "dataType": "json", 
     "success": function(data) { 
      if (data.length == 0){ 
       alert(year+' '+'Term'+' '+term+' '+'Results not found'); 
      } 
      else 
      var trHTML = ''; 
      $.each(data, function (i, item) { 
       trHTML += '<tr>' + 
        '<td>' + item.subject.name + '</td>' + 
        '<td>' + item.score + '</td>' + 
        '<td>' + item.position + '</td>' + 
        '<td>' + item.remark + '</td>' + 
        '</tr>'; 
      }); 
      $('#subject_tbody').append(trHTML); 
     }, 
     "error": function() { 
      alert(year+' '+'Term'+' '+term+' '+'Results not found'); 
     } 
    }); 
}); 
}); 

私は失敗した

var subject_score = $('.subjectscore').filter(function() { 
         subject_score.empty(); 

かを試してみました:

  var subject_score = $('.subjectscore').filter(function() { 
       subject_score.parent().parent().remove(); 

はこれで助けてください。

答えて

0

UPDATE:

それは、テーブルの内容を削除し、あなたのclearDataメソッドを追加し、Ajaxは、データを受信したことを後にします。

$(function() { 
    $('#subject_search_btn').click(function() { 
     var student_id = $('#search').val(); 
     var year = $('#year').val(); 
     var term = $('#term').val(); 
     var classs = $('#formclass').val(); 

     $.ajax({ 
      "url": "/search_student_results", 
      "data": {"studentid":student_id, "year":year, "term":term, "formclass":classs}, 
      "type": "get", 
      "dataType": "json", 
      "success": function(data) { 
       if (data.length == 0){ 
        alert(year+' '+'Term'+' '+term+' '+'Results not found'); 
       } 
       else 
       { 
        $('#subject_tbody').empty(); 
        var clearHTML = '<tr> <td class="cleardata"></td> <td class="cleardata"></td> <td class="cleardata"></td> <td class="cleardata"></td> </tr>'; 
        var trHTML = ''; 
        $.each(data, function (i, item) { 
         trHTML += '<tr>' + 
          '<td>' + item.subject.name + '</td>' + 
          '<td>' + item.score + '</td>' + 
          '<td>' + item.position + '</td>' + 
          '<td>' + item.remark + '</td>' + 
          '</tr>'; 
        }); 
        $('#subject_tbody').append(clearHTML); 
        $('#subject_tbody').append(trHTML); 
       } 
      }, 
      "error": function() { 
       alert(year+' '+'Term'+' '+term+' '+'Results not found'); 
      } 
     }); 
    }); 
}); 
+0

はWouter Bouwman、それはTDクラスです。

+0

回答を更新しました。これは、あなたの望むことですか? コンテンツを最初に削除します。その後、cleardataを追加し、その後、ajaxは学生データを受け取ります。 –

+0

ありがとうございました。正確に私はそれがほしいと思う方法。 –

0

代わりに.htmlを(HTML)機能を使用します。

$('#subject_tbody').html(trHTML); 

または追記する前に最初の内容をクリア:

$('#subject_tbody').html('').append(trHTML); 
+0

Folkert、あなたの提案はデータをロードしていません。私は、データがロードされた後のクリアを推測します。 –

+0

$( '#subject_search_btn')の後ろに置いてみました。($( '#subject_search_btn'私の答えに2つの例のうちの1つを入れてください。ああ、私はあなたのAjax成功関数の中の 'else'の後ろに中括弧がないと思います。 – Folkert

+0

あなたは、 '$($ subject_tbody) ( '#subject_tbody')。html( '読み込み中...'); '読み込みメッセージを表示するためのクリックハンドラの最初の行... – Folkert

関連する問題