如何在 AJAX 使用 jQuery 后刷新 Yii 中的网格视图?

How do I refresh grid view in Yii after AJAX using jQuery?

我正在尝试刷新网格,但出现此错误:

TypeError: $.fn.GridView 未定义

这是我的js代码:

$( document ).ready(function() {
        $("#username_filter").keyup(function( event ) {
            if ($(this).val().length >3){
                $.ajax({
                    url: "/common/main/filterData/",
                    type: "POST",
                    data: { username : $(this).val() },
                }).done(function() {
                    $.fn.GridView.update("#yw0");
                });
            }
        });
    });

这是视图:

.....
$this->widget('GridView', array(
        'dataProvider' => $data,
        //'filter' => '',
        'itemsCssClass'=>'table',
        'pager' => array(
                'class'                 => 'CLinkPager',
                'prevPageLabel'         => 'Previous',
                'nextPageLabel'         => 'Next',
                'header'                => '',
                'previousPageCssClass'  => 'btn btn-info btn-sm',
                'selectedPageCssClass'  => 'btn btn-warning btn-sm',
                'internalPageCssClass'  => 'btn btn-info btn-sm',
                'firstPageCssClass'     => 'btn btn-info btn-sm',
                'nextPageCssClass'      => 'btn btn-info btn-sm',
        ),
....

也许这是一个菜鸟问题,但是网格的id是在哪里生成的?

您可以为 GridView 指定自定义 ID,只需为网格视图选项指定 id 属性

$this->widget('GridView', array(
    'id' => 'my_grid_id',
    'dataProvider' => $data,
    // ...
);

手动更新试试这个

$('#' + id).yiiGridView('update');

应该是

$.fn.yiiGridView.update("yw0");

不是$.fn.GridView

设置gridview的id,只需要为grid view指定id属性即可。 示例:

$this->widget('GridView', array(
    'id' => 'custom_id',
    .....
));