Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ajax不工作的情况下更新CGridView_Javascript_Jquery_Ajax_Yii_Cgridview - Fatal编程技术网

Javascript 在ajax不工作的情况下更新CGridView

Javascript 在ajax不工作的情况下更新CGridView,javascript,jquery,ajax,yii,cgridview,Javascript,Jquery,Ajax,Yii,Cgridview,我有一个使用CGridView的网格,每当我试图更新它时,我都会遇到这个错误。试图解决这个问题很长一段时间,但仍然无法实现。我不知道我错过了什么 下面是我用来在单击按钮时强制网格刷新的内容 $('#sessions .refreshdata').live('click', function(e) { e.preventDefault(); $.fn.yiiGridView.update('sessions-grid'); } ); 错误是 TypeError: settings i

我有一个使用CGridView的网格,每当我试图更新它时,我都会遇到这个错误。试图解决这个问题很长一段时间,但仍然无法实现。我不知道我错过了什么

下面是我用来在单击按钮时强制网格刷新的内容

$('#sessions .refreshdata').live('click', function(e) {
   e.preventDefault();
   $.fn.yiiGridView.update('sessions-grid');
}
);
错误是

TypeError: settings is undefined

$grid.addClass(settings.loadingClass);
我不知道这是从哪里触发的

编辑1,

我试着将流程输出设置为true,然后它成功了,但它在同一页面中打乱了我的UI和其他需要的脚本

$this->getController()->renderPartial('sessionGrid', $params, false, true);
我开始获取yii的默认gridview及其样式。我不明白为什么会这样

排序在同一个网格中也不起作用。当我点击列名的排序链接时,它会刷新页面并将我带到另一个页面。所以Ajax在这种情况下完全不起作用

编辑2,

下面的方法也可以按照答案1中的建议进行工作

console.log('came in');
e.preventDefault();
$.fn.yiiGridView({ 'ajaxUpdate':['sessions-grid'] }); 
console.log('came out');
如何强制此网格刷新或更新

编辑3,

当我使用普通方式时,jquery.yiigridview.js会出现一个错误。设置未定义-第203行$grid.addClass(settings.loadingClass)

return this.each(function () {
var $form,
$grid = $(this),
id = $grid.attr('id'),
settings = gridSettings[id];
$grid.addClass(settings.loadingClass); 
编辑4,我在下面复制cgridview代码和操作

<?php TK::registerCssFile('grid');?>
<div id="sessions">
<h4><?php echo Yii::t('activity', (isset($model->activity->name) ? $model->activity->name . ' Sessions'  : 'Sessions')) ?></h4>
<?php $this->beginContent('application.views.templates.form', array('options'=>array('id'=>'sessions-form'))); ?>
<?php echo CHtml::hiddenField('activities_id', $model->activities_id); ?>
<?php echo CHtml::hiddenField('source', $source); ?>
<?php
$this->widget('application.components.SGridView', array(
   'id'=>'sessions-grid',
   'dataProvider'=>$model->search(),
   'filter'=>$model,
   'emptyText'=>(!empty($model->activities_id)) ? 'No results found.' : 'Please select activity from top grid.',
   'showNew'=>(!empty($model->activities_id) &&  Yii::app()->user->checkAccess("piActivitySessionsCreate") && $model->activity->source === 'iJOB') ? true : false,
   'newButtonCss'=>'new dialog-link-session',
   'createUrl'=>Yii::app()->controller->createUrl("/activities/default/sessionCreate", array("activities_id"=>$model->activities_id)),
   //'showExport'=>true,
   'columns'=>array(
      /*
      array('type'=>'raw',
         'value'=>'CHtml::hiddenField("ActivitySession[$data->id]", false, array(\'value\'=>$data->id))',
         'htmlOptions'=>array('style'=>'width:0%;'),
         'headerHtmlOptions'=>array('style'=>'width:0%;')),
      */      
      array('name'=>'site_id',
         //'value'=>'CHtml::link($data->sites->code, "#", array("title"=>$data->sites->name))',
         //'value'=>'CHtml::label($data->sites->code, null, array("title"=>$data->sites->name))',
         'value'=>'$data->sites!=null ? CHtml::tag("div", array("title"=>$data->sites->name), $data->sites->code) : ""',
         'type'=>'raw',
         'htmlOptions'=>array('style'=>'width:16%;'),
         'headerHtmlOptions'=>array('style'=>'width:16%;')),
      array('name'=>'location',
         'htmlOptions'=>array('style'=>'width:30%;'),
         'headerHtmlOptions'=>array('style'=>'width:30%;')),
      array('name'=>'start_time',
         'value'=>'Yii::app()->dateFormatter->formatDateTime($data->start_time, "medium", "short")',
         'htmlOptions'=>array('style'=>'width:15%;'),
         'headerHtmlOptions'=>array('style'=>'width:15%;')),
      array('name'=>'end_time',
         'value'=>'Yii::app()->dateFormatter->formatDateTime($data->end_time, "medium", "short")',
         'htmlOptions'=>array('style'=>'width:15%;'),
         'headerHtmlOptions'=>array('style'=>'width:15%;')),
      /*
      array('name'=>'max_positions',
         'htmlOptions'=>array('style'=>'width:6%;'),
         'headerHtmlOptions'=>array('style'=>'width:6%;')),
      */
      array('name'=>'closed',
         'value'=>'$data->closed == "1" ? Yii::t("activity", "Yes") : Yii::t("activity", "No")',
         'filter'=>array("0"=>Yii::t("activity", "No"), "1"=>Yii::t("activity", "Yes")),
         'htmlOptions'=>array('style'=>'width:6%;text-align:left;'),
         'headerHtmlOptions'=>array('style'=>'width:6%;')),
      array('name'=>'registered',
         'type'=>'raw',
         'value'=>'$data->registeredCount . \'/\' . $data->max_positions',
         'filter'=>false,
         'sortable'=>true,
         'htmlOptions'=>array('style'=>'width:8%;text-align:right;padding-right:15px'),
         'headerHtmlOptions'=>array('style'=>'width:8%;')),
      array('class'=>'CButtonColumn',
         'template'=>'{users} {view} {update} {delete}',
         'header'=>Yii::t("activity","Actions"),
         'headerHtmlOptions'=>array('style'=>'width:10%;'),
         'htmlOptions'=>array('style'=>'width:10%;'),
         'buttons'=>array(
            'users'=>array(
               'visible'=>'(Yii::app()->user->checkAccess("piActivityJobseekerRead") || Yii::app()->user->checkAccess("piActivityJobseekerUpdate")) ? true : false',
               'url'=>'Yii::app()->controller->createUrl("/activities/participants/index", array("session_id"=>$data->id))',
               'imageUrl'=>Yii::app()->request->baseUrl.'/images/base/users.png',               
               'options'=>array(
                  //'class'=>'users dialog-link-session',
                  'title'=>Yii::t('activity', 'Participants'),
               ),
            ),
            'view'=>array(
               'visible'=>'(Yii::app()->user->checkAccess("piActivitySessionsRead") && 
                  !Yii::app()->user->checkAccess("piActivitySessionsUpdate") && $data->activity->source === "iJOB") ||
                  ($data->activity->source === "ESS") ? true : false',
               'url'=>'Yii::app()->controller->createUrl("/activities/default/sessionView", array("id"=>$data->id))',
               'options'=>array('class'=>'view dialog-link-session'),
            ),
            'update'=>array(
               'visible'=>'(Yii::app()->user->checkAccess("piActivitySessionsUpdate") && $data->activity->source === "iJOB") ? true : false',
               'url'=>'Yii::app()->controller->createUrl("/activities/default/sessionUpdate", array("id"=>$data->id))',
               'options'=>array('class'=>'update dialog-link-session'),
            ),
            'delete'=>array(
               'visible'=>'(Yii::app()->user->checkAccess("piActivitySessionsDelete") && $data->activity->source === "iJOB") ? true : false',
               'url'=>'Yii::app()->controller->createUrl("/activities/default/sessionDelete", array("id"=>$data->id))',
               'options'=>array('class'=>'delete dialog-link-session'),
            ),
         ),
      ),
      array('type'=>'raw',
         'value'=>'$data->registeredCount',
         'htmlOptions'=>array('style'=>'display:none;'),
         'headerHtmlOptions'=>array('style'=>'display:none;'),
      ),
   ),
));
?>
<?php $this->endContent(); ?>
</div>
<style type="text/css">
.grid-view-body
{
    height: 170px;
}
</style>
然后我有如下的gridview和刷新按钮

在使porcessedOutput=true后,刷新的数据将开始工作,但每次增加1。。所以刷新现在会多次发生。。下面是一个发生了3次的镜头

我的问题是如何阻止这种刷新多次发生。

只是一个想法,试试看

$('#sessions .refreshdata').live('click', function(e) {
   e.preventDefault();
   $.fn.yiiGridView({ 'ajaxUpdate':['sessions-grid']  });
);
希望这有帮助


你能在这里展示一下cgridview吗。问题可能是如何设置它

只是一个想法,试试看

$('#sessions .refreshdata').live('click', function(e) {
   e.preventDefault();
   $.fn.yiiGridView({ 'ajaxUpdate':['sessions-grid']  });
);
希望这有帮助


你能在这里展示一下cgridview吗。问题可能是如何设置它

此问题在所有浏览器中都会发生?@DanielVaquero是的,它在所有浏览器中都会发生,网格不会通过单击按钮进行更新。请检查以上问题的编辑部分。按列排序是否有效?@DanielVaquero nope排序不起作用,会将我带到刷新页面。在这个网格中,任何ajax操作都不起作用。请在这里显示cgridview。问题可能是你如何设置这个问题在所有浏览器中都会发生?@DanielVaquero是的,它在所有浏览器中都会发生,网格不会随着按钮的点击而更新。请检查以上问题的编辑部分。按列排序是否有效?@DanielVaquero nope排序不起作用,会将我带到刷新页面。在这个网格中,任何ajax操作都不起作用。请在这里显示cgridview。问题可能是你如何设置不,这不起作用。请在问题中查看上面编辑的第2部分。请在问题中添加您的cgridview代码,我只是尝试了一下,它可以按照您和我的方式工作。不,这不起作用。请在问题中查看上面编辑的第2部分。请在问题中添加您的cgridview代码,我只是尝试了一下,它可以很好地按照您和我的方式工作。