Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Yii:在CGridview中包含JS/Ajax函数的最佳性能优势_Yii_Yii Extensions - Fatal编程技术网

Yii:在CGridview中包含JS/Ajax函数的最佳性能优势

Yii:在CGridview中包含JS/Ajax函数的最佳性能优势,yii,yii-extensions,Yii,Yii Extensions,我是新手 我不止一次地尝试在我的CGRIDVIEW中以一种简单明了的方式包含Ajax/JS函数, 代码基本上是 'click'=> "function (){ $.fn.yiiGridView.update('news-grid', { type:'POST', url:$(this).attr('href'), success:function(data) { $('#AjFlash').html(data).fadeIn().animat

我是新手 我不止一次地尝试在我的CGRIDVIEW中以一种简单明了的方式包含Ajax/JS函数, 代码基本上是

'click'=> "function (){
    $.fn.yiiGridView.update('news-grid', {
    type:'POST',
    url:$(this).attr('href'),
    success:function(data) {
        $('#AjFlash').html(data).fadeIn().animate({
            opacity: 1.0
        }, 3000).fadeOut('slow');

        $.fn.yiiGridView.update('news-grid');
    }
})
return false;
}

在你看来,什么是最干净,最有利于性能的方式包括这一点?
谢谢你的时间

我不知道,但我认为没有必要在一次操作中强制网格更新两次,我也不喜欢像这样包含我的javascript。根据我的需要,有几种方法,为了回答这个问题,我将向您展示最简单的方法:

在单独的文件中创建全局对象:

//app.js
var App = {
  updateSomething: function () {
    $.post(
      $(this).attr('href'),
      success:function(data) {
        $('#AjFlash').html(data).fadeIn().animate({
          opacity: 1.0
        }, 3000).fadeOut('slow');
        $.fn.yiiGridView.update('news-grid');
      }
    );
    return false;
  }
};
您可以通过调用

在您的网格上:

'click'=> "js:App.updateSomething",

有很多更好的方法,但对于想要有某种组织的js初学者来说,这更简单。

你到底想做什么?为什么要调用$.fn.yiiGridView.update'news-grid';再次成功吗?基本上,我调用一个控制器函数来更新数据库值并相应地更新gridview。我遵循了这个教程,$.fn.yii。。。已弃用,新语法为$'news-grid'.yiiGridView'update';所以,为了让我只重新加载CGridview而不是整个页面,我可以直接使用这个功能吗?谢谢Asgaroth的快速回答!我仍然是一名JS/AJAX初学者,我在这里试图实现的是使用CButtonColumn更新一个值,在url中我添加了一个指向控制器操作的链接,但我现在想要实现的是更新cgridview,而不必重新加载整个页面。不幸的是,我遵循了这个教程,因为它是我找到的唯一教程。如果你能给我指出一个更好更广泛的,我将永远感谢你!的确如此,谢谢你!但是页面正在被重新加载,但正如我所说的,我正试图以一种有利于性能的方式实现它,其中只有网格被更新。
'click'=> "js:App.updateSomething",