【发布时间】:2015-05-27 17:15:31
【问题描述】:
在我的 yii2-app 中,我想将机器分配给机器组。机器的数量使得用户必须使用带有排序和过滤功能的 kartik-gridview(所有机器的列表)的复选框列来选择机器(普通的多选表单域不提供这些功能)。
为了处理选定的网格行,我只找到了一个使用 Javascript 的解决方案:http://www.yiiframework.com/forum/index.php/topic/53777-gridview-get-selected-colum/
我在我的按钮中实现了这个:
<?= Html::button(yii::t('app', 'Save'), ['class' => 'btn btn-primary',
'onclick' => "var keys = $('#w0.grid-view').yiiGridView('getSelectedRows');"
. "$.ajax({"
. "type: 'POST',"
. "url: 'http://localhost:8080/eddb1/frontend/web/index.php?r=machine-group/test',"
. "dataType: 'json',"
. "data: {keylist: keys}});"]) ?>
如您所见,我不得不使用$.ajax 而不是$.post,因为$.post 的url 不起作用,我总是得到404 not found-错误。
问题是,ajax-post 总是空的。按照控制器代码回显后请求:
public function actionTest()
{
echo var_dump(Yii::$app->request->post());
die();
}
我也试过了
echo var_dump($_POST);
同样的结果。 我在这里做错了什么?是否有可能在没有 Javascript 的情况下处理选定的行? - 我尝试将 gridview 放在 ActiveForm-Tags 中并使用正常的 submittButton,但没有发送后请求。
请大家帮忙,在这里卡了 2 天了...谢谢!!!
PS.:这是gridview-code:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel'=>$searchModel,
'columns' => [
['class' => 'kartik\grid\CheckboxColumn'],
'company_name',
'identifier',
'licenceplate',
'serial_number',
'type_name',
'class_name',
'manufacturer',
'model_name',
'variant_name',
],
'persistResize' => true,
'showPageSummary' => false,
'pjax' => true,
'panel' => [
'before' => ''
],
'toolbar' => [
'{export}',
'{toggleData}'
]
]);
?>
【问题讨论】:
-
在 firefox/chrome 中使用
console.debug()转储您的keysvar,确保其中确实有内容。我怀疑它会是空的。 -
它是空的...但是为什么呢?
标签: javascript ajax gridview yii2