控制器中的Yii2额外参数ajax

时间:2015-12-25 15:43:14

标签: php jquery ajax yii2

我需要批量删除我的网格。我有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());
}

它适用于地址... /电影/索引,但我需要为地址/电影/索引工作?参数=值 怎么做?

1 个答案:

答案 0 :(得分:1)

你似乎有令人困惑的代码。您的代码正在向服务器发出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;
    });
});

getpost请求不同,您的代码需要在使用方式上保持一致!