Yii2遇到Ajax请求的麻烦

时间:2017-06-16 16:20:12

标签: php jquery ajax yii2

各位大家好!请帮我解决问题。

我有一些HTML

<ul class="filter_list filter_house_type">
      <li><input type="checkbox" id="check1" value="House" onclick="sendRequest();"><label for="check1"><?= Yii::t('app', 'House') ?></label></li>
</ul>

JS

function sendRequest(){
   $.ajax({
       url: '/site/ajax',
       type: 'POST',
       data: { text: 'text' },
       success: function(data) {
           alert(data);
       }
   });
}

控制器操作

public function actionAjax()
{
    if(Yii::$app->request->post('text')){
        $test = 'Ajax request';
    } else {
        $test = 'Some troubles!';
    }
    return \yii\helpers\Json::encode($test);
}

当我点击复选框时,我会看到一个带有&#34;有些麻烦的页面!&#34;和控制台是空的。
enter image description here 为什么渲染页面?我怎样才能在Ajax函数中得到答案。请帮忙!

1 个答案:

答案 0 :(得分:1)

可能需要检查帖子(&#39; text&#39;),例如:

  public function actionAjax()
  {
      $post = Yii::$app->request->post()
      if(isset($post('text')){
          $test = 'Ajax request';
      } else {
          $test = 'Some troubles!';
      }
      return \yii\helpers\Json::encode($test);
  }

并尝试使用方法POST而不是类型

$.ajax({
   url: '/site/ajax',
   method: 'POST',
   data: { text: 'text' },
   success: function(data) {
       alert(data);
   }

});

仅用于调试目的尝试使用不同的方法

使用post而不是ajax,.. test而不是text

$.post( '/site/ajax' , {test:'test'},
    function (data) { 
        alert(data);
 });

public function actionAjax()
{
    if(Yii::$app->request->post('test')){
        $test = 'Ajax request';
    } else {
        $test = 'Some troubles!';
    }
    return \yii\helpers\Json::encode($test);
}