Yii ajax jquery多个请求只是第一个工作

时间:2013-12-16 12:54:05

标签: php jquery ajax yii

ajax请求的许多输入字段和按钮对仅适用于第一次。在第一次请求 - 响应之后,其他按钮不会调用ajax函数。

有一个数据网格列表。每行都有一个Title字段(作为输入),带有一个按钮,用于调用ajax函数来更新该字段和刷新列表。

我第一次点击其中一个按钮一切正常,数据发送和列表刷新新数据。但在此之后,当我点击其中一个按钮时没有任何反应,甚至功能都没有调用。 我在哪里做错了? 我的ajax功能:

$('.titleBtn').click(function(event){

    var id = $(this).attr('name');
    var title = $('#' + id).attr('value');


    var formAction = '".$this->createUrl('article/changeTitle')."';

    $.get(formAction,{id:id,title:title},function(result){
        $.fn.yiiGridView.update('article-grid');


        }
    );
    event.preventDefault();
});

我的网格列表:

<?php $form=$this->beginWidget('CActiveForm', array(
'action'=>Yii::app()->createUrl($this->route),
'method'=>'get',
'id'=>'Artform',
)); ?>

<?php $this->widget('bootstrap.widgets.TbGridView', array(
    'id'=>'article-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'ID',
        array(
            'header'=>Yii::t('labels','Title'),
            'name'=>'Title',
            'type'=>'raw',
            'value'=> function($data) use ($model) {
                    return '<input type="text"   id="'.$data->ID.'" value="'.$data->Title.'"><button type="button"  name="'.$data->ID.'" class="titleBtn" >Update</button>';
                                },

        ),
    ....
),
)); ?>
//Some buttons irrelevant to this subject for submitting whole list.
<?php $this->endWidget('CActiveForm'); ?>

2 个答案:

答案 0 :(得分:0)

您需要在TbGridView中添加afterAjaxUpdate选项并添加js代码以在ajax更新后调用并设置处理程序。

答案 1 :(得分:0)

您可以使用delegate

设置活动
$('#Artform').delegate('.titleBtn', 'click', function() {
...
});