2016-10-03 16 views
0

これは、レンダリングajax経由でコントローラからページをリクエストしたときにリンクがありました。以前はidだけを渡していましたが、コントローラに、どのように私はこれを達成ん、 これは、私はこれが唯一これは、コントローラコードは、2つのパラメータを期待してコントローラにjqueryを使用してyii2 ajaxリクエストで2つのパラメータを渡す

Html::a('click me', ['#'], 
['value' => Url::to('checktruck?id='.$model->id), //this is where the param is passed 
'id' => 'perform']); 

コントローラへの単一のパラメータを渡すリンク」です

を試してきたものです:

public function actionChecktruck($id,$category) //it expects 2 parameters from above link 
{ 
    $truckdetails = Truck::find()->where(['id' =>$id])->one(); 

    if (Yii::$app->request->post()) { 
     $checklistperform = new TodoTruckChecklist(); 
     $truck = Truck::find()->where(['id'=>$id])->one(); 
     $checklistperform->truck_id=$id; 
     $checklistperform->registered_by=Yii::$app->user->identity->id; 
     $checklistperform->save(); 
     $truck->update(); 

     var_dump($checklistperform->getErrors()); 
     //var_dump($truck->getErrors()); 
    } 
    else { 
     $truckcategory = Checklist::find()->where(['truck_category'=>$truckdetails->truck_category])->andWhere(['checklist_category'=>$category])->all(); 
     return $this->renderAjax('truckyard/_checklistform', [ 
      'truckcategory' => $truckcategory,'truckvalue'=>$id, 
     ]); 

    } 

} 

これは、これは何のポストがない場合

がどのように私は追加のパラメータを渡すことができますjqueryのコードでポストの要求時に上記のコントローラに依存して別のボタンの私のjqueryのコード

$("#postbutn").click(function(e) { 

    $.post("checktruck?id="+truckid, //here i would like to pass 2 params 
       {checked:checked,unchecked:unchecked,truckid:truckid} 
      ) 
} 

ですコントローラ

答えて

1

まず、

$this->registerJs("$('#perform').click(function(event){ 

event.preventDefault(); // to avoid default click event of anchor tag 

$.ajax({ 
    url: '".yii\helpers\Url::to(["your url here","id"=>$id,"param2"=>param2])."',   
    success: function (data) { 
      // you response here 
     }, 
     }); 
});"); 
を次のように要求を提出することができ、このIDを使用してリンク

Html::a('click me', ['#'],['id' => 'perform']); 

の値を設定する必要はありません

メソッドの属性を 'POST'と記述する必要はなく、GETメソッドを使用して送信したい場合は

のようにパラメータを受け入れる必要があります0
public function actionChecktruck() //it expects 2 parameters from above link 
{ 
    $id = Yii::$app->request->queryParams['id']; 
    $param2 = Yii::$app->request->queryParams['param2']; 

    $truckdetails = Truck::find()->where(['id' =>$id])->one(); 

    if (Yii::$app->request->post()) { 
     $checklistperform = new TodoTruckChecklist(); 
     $truck = Truck::find()->where(['id'=>$id])->one(); 
     $checklistperform->truck_id=$id; 
     $checklistperform->registered_by=Yii::$app->user->identity->id; 
     $checklistperform->save(); 
     $truck->update(); 

     var_dump($checklistperform->getErrors()); 
     //var_dump($truck->getErrors()); 
    } 
    else { 
     $truckcategory = Checklist::find()->where(['truck_category'=>$truckdetails->truck_category])->andWhere(['checklist_category'=>$category])->all(); 
     return $this->renderAjax('truckyard/_checklistform', [ 
      'truckcategory' => $truckcategory,'truckvalue'=>$id, 
     ]); 

    } 

} 
0

のリンク、あるいは$ .post要求はビューファイルで、この1、 試してみてください

$this->registerJs("$('#postbutn').click(function(){ 
$.ajax({ 
    url: '".yii\helpers\Url::to(["u r URL"])."',   
    method: 'POST',  
    data: {id:id, truckid:truckid }, 
    success: function (data) { 
     }, 
     }); 
});"); 
フォームを送信するためのjQueryのAJAXを使用しているように、すべての
関連する問題