Yii中CGridView上的额外Ajax

时间:2014-01-02 01:21:09

标签: php ajax yii cgridview

我对Yii很新,我正在处理导致我麻烦的CGridView

CGridView位于renderPartial视图中。

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'ratesGrid',
'dataProvider'=>rates::model()->searchSameProperty($propertyid),
'columns'=>array(
    'name',
    'from',
    'to',
    'price',
    array( 
    'header'=>'html',
    'type'=>'raw',
    'value'=>'\'
       <a href="#" class="deleteRate btn btn-danger" data-rateid="\'.$data->id.\'">Delete Rate</a>
       \'', 
    ),
),));

Yii::app()->clientScript->registerScript('ratesdeletion', '
$("#ratesProperty").on("click", ".deleteRate", function(e){
    e.preventDefault();
    $.ajax({
        "url":"'.CController::createUrl('rates/delete').'",

            "type":"POST",
            "data":{
                "id":$(this).data("rateid"),
            },
            "success":function(data){
                $.fn.yiiGridView.update("ratesGrid");
            },

    });
});
', CClientScript::POS_END);

好的部分是当我点击删除按钮时,它使用正确的ID调用“rate / delete”,但是当“rates / delete”完成其工作时,不知何故进行了另一个AJAX调用(我是从未编码过,请查看屏幕截图。

Network tab on WebDev Tools

所以我的问题是:

  1. 为什么Yii正在创建我从未创建的第二个ajax调用?

  2. 如何避免第二次ajax通话?

  3. 编辑:

    我尝试添加一个锚点,然后在点击事件中附加ajax调用,并继续进行第二次调用。

1 个答案:

答案 0 :(得分:1)

当您从网格中删除某些项目时,首先ajax调用用于删除对服务器的请求,第二个请求用于在删除后重新创建网格。在使用像这样的ajax网格视图时,我们无法避免第二次ajax调用。