2015-12-25 30 views
0

我需要批量刪除我的網格。我有jquery腳本Yii2控制器中額外的參數ajax

$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()); 
} 

它的地址的工作... /電影/指數,但我需要的地址/電影/指數工作?參數=值 怎麼辦?

+0

我不能完全理解你的情況。就我所知,你的JS運行在'/ movie/index',你需要發送GET請求到'/ movie/index?parameter = value',對吧?但是你的腳本中有另外一個URI:'.get('mass-status-movie'' ...並且提供的動作是'/ something/massdelete' ... –

+0

是的,我需要發送請求。massdelete會刪除網格中的所有項目 – Demolog

+0

嗯,你發送的請求不是你提供的動作 –

回答

0

您似乎有混淆的代碼。您的代碼正在向服務器發送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存在,您可以使用此參數。

您還可以像Yii::$app->request->get('keylist')那樣訪問腳本中任何位置的get參數。在這種情況下,你不需要$密鑰列表參數,所以你可以只使用

public function actionMassStatusMovie(){ 
     $keyList = Yii::$app->request->get('keylist'); 
    } 

案例2

或者,您可以通過post請求發送數據。在這種情況下,但要做到這一點,你需要改變你原來的JavaScript代碼做出post要求你不使用的參數,只需要檢查它就像你一直在做,

public function actionMassStatusMovie(){ 
     $keyList = Yii::$app->request->post('keylist'); 
    } 

$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的要求是不同的,你的代碼需要在如何使用他們一致!