2017-06-16 91 views
0

大家好!請幫我解決問題。

我有一些HTMLYii2 Ajax請求的麻煩

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

當我點擊複選框我看到一個頁面,「索姆煩惱!「並且控制檯是空的。
enter image description here 爲什麼渲染頁面?我如何在Ajax函數中獲得答案?請幫忙!

+0

這看起來像你在瀏覽器中輸入了這個'/ ajax' url,這就是你看到那裏的原因。當你點擊這個html頁面上的複選框時,你應該看到'Ajax請求'的提醒。 – Bizley

+0

@Bizley 告訴我怎樣才能解決這個問題? – Viskas

+0

你是什麼意思?這裏破了什麼? – Bizley

回答

1

可能是你需要交的支票( '文本'),例如:

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

});

,只是爲了調試的需要嘗試使用differente方法

後期使用的,而不是阿賈克斯,..測試而不是文本

$.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); 
} 
+0

感謝您的迴應,我試過你的代碼,但它沒有幫助 – Viskas

+0

嘗試var_dump($ post('text'))請讓我知道 – scaisEdge

+0

答案更新了一個簡單的建議 – scaisEdge