簡體   English   中英

ajax發布數據未讀yii2

[英]ajax post data is not read yii2

我正在嘗試使用Yii :: $ app-> request-> post()在控制器操作中讀取通過AJAX發布的$ _POST數組,但是發生了一些奇怪的事情。

jQuery:

    function renderGridView() {
    var formId = $('#input-field :input[value!=""]');
    // extract values. Make sure to send _csrf token

   $.ajax({
       url: "?r=value-search%2Fsearch", //this one works
       method: 'POST',
       data: {
           searchData: formId.serializeArray(),
       },
       success: function(response) { //JSON array is returned. 
           /*$('#resultGrid').DataTable( {
               data: [
                   response['provider']
                ],
               columns: [
                   response['columns']
                ]
           }); */
           console.log(response);

       }


   })

}

`

PHP控制器動作:

public function actionSearch() {
       $data = \Yii::$app->request->post('searchData');
       $tt; $svalue;
       if(count($data) === 0) {throw new UserException('data is emptry');}

       echo var_dump($data);
    }

這就是問題,上面的代碼運行正常。 但是,當我試圖echo $data會拋出我的自定義UserException “數據為空”,而不是PHP的“試圖將數組作為字符串傳遞”,這是我通常期望的。 是什么原因造成的? 為什么post()會這樣表現? 有技術原因嗎?

只是改變

 data: {
           searchData: formId.serializeArray(),
       },

 data:formId.serialize(),

你應該使用ActiveForm使用模型來創建您的形式和名稱將被自動分配給輸入,其中包括該公約ModelName[field_name]除了這個,你還沒有表現出你的形式,但在你的action ,你所得到的searchDatapost()數組,因此我假設您將數據發布為

[
  searchData=>[
    field_1=>value,
    field_1=>value,
    field_1=>value,
    field_1=>value,
  ]
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM