如何通过ajax发布后重新加载引导表

Posted

技术标签:

【中文标题】如何通过ajax发布后重新加载引导表【英文标题】:How to realod bootstrap table after post via ajax 【发布时间】:2018-08-26 12:36:09 【问题描述】:

我正在使用引导表显示数据库中的行,它是 MVC ASP.NET,我已将数据放入 ViewBag 并返回包含 viewbag 作为要显示的数据的视图,所以它看起来像这样:

<div class="row rpad">
        <div class="col-md-12">
            <div class="z-panel-2">
                <div class="oneRow">
                    <table id="cT">

                        <thead>
                            <tr>
                                <th>
                                    Name
                                </th>
                                <th>
                                    Date & time
                                </th>
                                <th>
                                    Type
                                </th>
                                <th>
                                    Homework done
                                </th>

                                <th>
                                    Teacher
                                </th>

                            </tr>
                        </thead>
                        <tbody>
                            @foreach (var item in ViewBag.AllClasses)
                            
                                <tr class="class" id="@item.ID">


                                    <td>@item.Date</td>
                                    <td>@item.Type.Name - @item.User_Class.ClassType.NumberOfLessons</td>
                                    <td>
                                        @if (item.HomeWorkDone ?? false)
                                        
                                            <i class="fa fa-check" aria-hidden="true"></i>
                                        
                                    </td>
                                    <td>
                                        @item.User.Name
                                    </td>
                                </tr>
                            
                        </tbody>

                    </table>

可能会注意到我正在循环所有数据 ViewBag.AllClasses 并且我正在将数据显示为表格中的行..

当用户单击一行时,我正在使用值更新数据库:作业已阅读:true

$.ajax(
        url: '@Url.Action("setHomework", "homework")',
        type: "GET",
        data:  id: id ,

并且下次用户重新加载页面时,将执行此条件(如上面的代码中所述):

@if (item.HomeWorkDone ?? false)
 
       i class="fa fa-check" aria-hidden="true"></i>
 

上面的代码意味着,如果用户在作业字段上的值为 true,则会显示 fontawesome 图标,这样他就会知道他把作业弄红了,但我想知道在他点击后如何重新定义这个引导表的内容该行,因此他不需要重新加载页面即可看到该行上的那个标记(字体真棒图标)..(作为作业是红色的标志)

我希望有另一种方法,而不是刷新整个页面/视图.. 谢谢

【问题讨论】:

【参考方案1】:

我认为您可以在 ajax 调用中添加成功回调。在里面..你可以在该行附加一个 td 。

   $.ajax(
        url: '@Url.Action("setHomework", "homework")',
        type: "GET",
        data:  id: id ,
        success: function (data) 
                if (data == "1")  // worked as it should

  $(row).find('td:last').after('<td><i class="fa fa-check" aria-hidden="true"></i></td>');

     
    
  );

我认为一种更简洁的方法是默认设置一个td,然后根据item.HomeWorkDone 更改图标的类别。所以它会是这样的:

  $(row).find('.fa-exclamation-circle').addClass('fa-check').removeClass('fa-exclamation-circle');

另外,建议使用 HTTP POST 进行更新操作。

【讨论】:

以上是关于如何通过ajax发布后重新加载引导表的主要内容,如果未能解决你的问题,请参考以下文章

发布评论后,Django Ajax div 未重新加载/消失

如何在 Ajax 请求后重新生成 jQuery Mobile 样式?

如何在AngularJS中通过AJAX加载数据后重新初始化数据表?

ajax成功后重新加载页面

ajax 请求后重新加载 dojo 小部件

如何使用 Ajax 加载过滤后的数据,而无需在 laravel 中重新加载整个页面