Django AJAX 更新Table失去sortable功能

oalqel3c  于 2023-03-31  发布在  Go
关注(0)|答案(1)|浏览(106)

我用这个插件使我的HTML表排序,它的工作很好。

<script src="https://www.kryogenix.org/code/browser/sorttable/sorttable.js"></script>

您可以通过在Table类中添加Sortable来调用它

<table id='myTable' class="table table-striped table-hover table-bordered fixed_header sortable">

但是,当我在过滤后用 AJAX 更新表时,表正确更新,但失去了可排序功能。
我必须重新导入脚本吗?我试着把它放在我的home.html页面中,当然也放在我的filter.html页面中,这是在 AJAX 调用之后呈现的。
我也试过这些东西:Sortable function when content is updated via ajax
Why would javascript fail when called dynamically (Ajax)?
这是我的 AJAX

<script src="https://www.kryogenix.org/code/browser/sorttable/sorttable.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script src="https://www.kryogenix.org/code/browser/sorttable/sorttable.js"></script>
   <form id="searchform" method="POST" action="{% url "article-filter" %}">
        {% csrf_token %}
    <input type="text"  id="txtSearch" name="txtSearch">
    <button type="submit" >Submit</button>
</form>

<script>
        $("#searchform").submit(function(e) {
        e.preventDefault();
        $.ajaxSetup({
        data: {txtSearch: $('#txtSearch').val(), csrfmiddlewaretoken: '{{ csrf_token }}' },});
        $.ajax({
            type: "POST",
            url: "article-filter/",
            dataType: 'json',
        }).done(function(data) {
            $('#myTable').html(data.html_table);
        });
    });
</script>

这里是home.html和filter.html中的表

table id='myTable' class="table table-striped table-hover table-bordered fixed_header sortable">
  <thead class="table-dark">
    <tr id='tableHeader'>
      <th scope="col">Name</th>
      <th scope="col">Email</th>
      <th scope="col">Phone</th>
      <th scope="col">Address</th>
      <th scope="col">City</th>
      <th scope="col">State</th>
      <th scope="col">Zipcode</th>
      <th scope="col">Created At</th>
      <th scope="col">ID</th>
    </tr>
  </thead>
  <tbody>

{% if records %}
    {% for record in records %}
        <tr>
            <td>{{ record.first_name }} {{ record.last_name }}</td>
            <td>{{ record.email }}</td>
            <td>{{ record.phone }}</td>
            <td>{{ record.address }}</td>
            <td>{{ record.city }}</td>
            <td>{{ record.state }}</td>
            <td>{{ record.zipcode }}</td>
            <td>{{ record.created_at }}</td>
            <td><a href="{% url 'record' record.id %}">{{ record.id }}</a></td>
        </tr>
    {% endfor %}

{% endif %}

      </tbody>
    </table>

谢谢

3ks5zfa0

3ks5zfa01#

我终于和它一起工作了。
在home.html中命名我的表id='myTable'
在filter.html id='myTable2'上命名更新的表
然后像这样更改我 AJAX 调用:

<script>
        $("#searchform").submit(function(e){
        e.preventDefault();
        $.ajaxSetup({
        data: {txtSearch: $('#txtSearch').val(), csrfmiddlewaretoken: '{{ csrf_token }}' },});
        $.ajax({
            type: "POST",
            url: "article-filter/",
            dataType: 'json',
            success: function (data) {
            $("#myTable").html(data.html_table);
            sorttable.makeSortable(document.getElementById("myTable2"));
        }
    });
})
</script>

相关问题