AJAX无法删除DOM数据

时间:2016-05-03 06:54:03

标签: javascript php jquery ajax

我有一个下拉选项,用户可以在其中选择一个名称,相关数据将随选择一起加载。一切正常,但它总是在第二次或第三次选择后保留第一个数据。当我第二次选择值时,如何删除第一个选定的数据?

<table  class="table table-striped table-bordered"  id="example">
    <thead>
        <tr>            
            <td>Course Code</td>
            <td>Name</td>
            <td>Grade</td>                      
        </tr>
    </thead>
</table>  

<script type="text/javascript">
    $('#student').on('change', function(e) {               
        $('#example tr:last').remove().end();
        var std_id = $('#student option:selected').attr('value');

        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

        $.ajax({ 
            type: "POST", 
            url: "{{url('ajax-student-result')}}",
            data: {
                std_id: std_id
            },
            success: function(data) {                  
                $.each(data, function(index, subcatObj) {
                    $('#example tr:last').after('<tr><td id="code">' + subcatObj.c_code + '</td><td id="course_name">' + subcatObj.c_name + '</td><td id="grade">' + subcatObj.grade + '</td></tr>');
                });
            } 
        });
    });
</script>  

2 个答案:

答案 0 :(得分:1)

我猜你正在使用Symfony和Twig。

我认为CSRF令牌只能使用一次,所以如果你不为每个ajax帖子请求更新你的csrf令牌,那么它可能就是它只运行一次的原因。

编辑:发现这个问题可能对您有所帮助: Generate new CSRF token without reloading the entire form

答案 1 :(得分:0)

更改代码以包含删除:

success: function(data) {
            $('#example tr:last')remove(); 
            $.each(data, function(index, subcatObj) {
                $('#example tr:last').after('<tr><td id="code">' + subcatObj.c_code + '</td><td id="course_name">' + subcatObj.c_name + '</td><td id="grade">' + subcatObj.grade + '</td></tr>');
            });
        }