我需要对我的网格进行批量删除。我有jquery脚本
$activeMassScriptJS= <<<JS
$(document).ready(function(){
$("button.product-update").on('click',function(e){
e.preventDefault;
var keys = $('#products-grid').yiiGridView('getSelectedRows');
$.get('mass-status-movie', {keylist : keys}, function(data) { alert(keys[0]);});
return false;
});
});
JS;
控制器
public function actionMassdelete(){
if (Yii::$app->request->post('keylist')) {
$keys = Yii::$app->request->post('keylist');
foreach ($keys as $key) {
$model = Product::findOne($key);
$model->delete();
}
}
return $this->redirect(Url::previous());
}
它正在为地址工作/电影/索引,但我需要为地址/电影/索引工作?parameter=值怎么办?
您似乎有令人困惑的代码。您的代码正在向服务器发出get
请求,但您的操作(不是向其发送请求的操作)正在检查post
参数!您需要整理您正在发出的请求,并相应地检查值。以下是两种情况;
案例1您将ajax调用保留为get
请求,因此您的代码是
$activeMassScriptJS= <<<JS
$(document).ready(function(){
$("button.product-update").on('click',function(e){
e.preventDefault;
var keys = $('#products-grid').yiiGridView('getSelectedRows');
$.get('mass-status-movie', {keylist : keys}, function(data) { alert(keys[0]);});
return false;
});
});
您通过get
请求发送的值现在有两种可用方式。在您指向的动作,即actionMassStatusMovie()
,您可以这样访问它们;
public function actionMassStatusMovie($keyList){
//Your code here
}
如果您一直希望keyList
参数存在,则可以使用此选项。
您也可以访问脚本中任何位置的get
参数,如Yii::$app->request->get('keylist')
。在这种情况下,您不需要$keyList参数,所以您可以只使用
public function actionMassStatusMovie(){
$keyList = Yii::$app->request->get('keylist');
}
情况2
或者,您可以通过post
请求发送数据。在这种情况下,您不使用参数,只需像您一直在做的那样检查它,
public function actionMassStatusMovie(){
$keyList = Yii::$app->request->post('keylist');
}
但要做到这一点,您需要更改原始的javascript代码以发出post
请求。
$activeMassScriptJS= <<<JS
$(document).ready(function(){
$("button.product-update").on('click',function(e){
e.preventDefault;
var keys = $('#products-grid').yiiGridView('getSelectedRows');
$.post('mass-status-movie', {keylist : keys}, function(data) { alert(keys[0]);});
return false;
});
});
get
和post
请求是不同的,您的代码需要在使用它们的方式上保持一致!