YII2 Gridview不返回所选行(未捕获的TypeError:无法读取未定义的yii.Gridview.js:140的属性“selectionColumn”)

YII2 Gridview不返回所选行(未捕获的TypeError:无法读取未定义的yii.Gridview.js:140的属性“selectionColumn”),yii2,yii2-advanced-app,yii2-user,Yii2,Yii2 Advanced App,Yii2 User,我试图通过post从gridview传递一个包含选定键的数组,但我总是得到相同URL的错误: POST http://localhost/cngrx/web/index.php/ponenciaresumen/[object%20Object] 404 (Not Found) 似乎Generate代码总是这样:path/myController/[object%20Object] 不管我设置哪个url,代码生成器总是相同的url,这不是我需要的。我的代码是: <script>

我试图通过post从gridview传递一个包含选定键的数组,但我总是得到相同URL的错误:

POST http://localhost/cngrx/web/index.php/ponenciaresumen/[object%20Object] 404 (Not Found) 
似乎Generate代码总是这样:path/myController/[object%20Object] 不管我设置哪个url,代码生成器总是相同的url,这不是我需要的。我的代码是:

<script>
  $(document).ready(function(){
    $('#MyButton').click(function(){

       var keys = $('#w1').yiiGridView('getSelectedRows');
        $.post({
           url: 'myController/myAction', 
           dataType: 'json',
           data: {keylist: keys}

        });
    });
  });
</script>
谢谢你的进步

需要类yii\grid\CheckboxColumn

var keys=$'grid'.yiiGridView'getSelectedRows'


我认为当你把网格放入pjax容器时会发生这种情况

如果您不使用Pjax,那么应该使用元素id w1而不是网格

Yii2渲染此脚本

jQuery(document).ready(function () { jQuery('#modal-upload').modal({"show":false}); jQuery('#w0').yiiGridView({"filterUrl":"/advanced/backend/web/index.php?r=state%2Findex","filterSelector":"#w0-filters input, #w0-filters select"}); jQuery('#w1').yiiGridView({"filterUrl":"/advanced/backend/web/index.php?r=state%2Findex","filterSelector":"#w1-filters input, #w1-filters select"}); jQuery('#w1').yiiGridView('setSelectionColumn', {"name":"selection[]","multiple":true,"checkAll":"selection_all"}); jQuery('#w2').yiiGridView({"filterUrl":"/advanced/backend/web/index.php?r=state%2Findex","filterSelector":"#w2-filters input, #w2-filters select"}); });
查看代码源代码,并检查复选框的id是否为w1或w0。。默认情况下,我使用的是“w0”,我可以修复我的问题:

var keys = $('#w0').yiiGridView('getSelectedRows');

什么是ponenciaresumen?什么是[object%20Object]?在AppAsset.php上,添加以下属性:public$jsOptions=['position'=>\yii\web\View::POS\u HEAD];因此jQuery将在页面的开头加载。然后,如果您正在使用PJAX,请将选择器更改为$'.grid view',而此代码可能会回答此问题,并提供有关此代码为什么和/或如何回答此问题的附加上下文,以提高其长期价值。不鼓励只使用代码的答案。


    $script = '
    jQuery(document).ready(function() {
      btnCheck  = $("#btn-check");
      btnCheck.click(function() {
        var keys = $("#w2").yiiGridView("getSelectedRows");
        alert(keys);
        $.ajax({
            type: "POST",
            url: "'.\yii\helpers\Url::to(['/controller/action']).'", 
            dataType: "json",
            data: {keylist: keys}
        });
      });
    });';
    $this->registerJs($script, \yii\web\View::POS_END);

var keys = $('#w0').yiiGridView('getSelectedRows');
$('#MyButton').click(function(){ 
    var keys = $('#w0').yiiGridView('getSelectedRows');
    $.post("index.php?r=myController/myAction", {keylist: keys}, function(result){
        $("span").html(result);
    });
});