我使用ajax在yii2中開發一個搜索欄。問題是Yii::$app->request->isAjax
屬性總是返回false
Yii2:isAjax返回false
這是我的行動:
public function actionAjaxsearch()
{
if(Yii::$app->request->isAjax)
{
$keywords = Yii::$app->request->queryParams;
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return [
'data' => $keywords,
'code' => 200
];
}
else throw new \yii\web\HttpException(404, 'Page not found.');
這是我的腳本:
$('#search-box').keyup(function(event){
event.preventDefault();
$.ajax({
url: 'http://localhost/items/ajaxsearch',
data: {keywords: $('#search-box').val()},
type: 'GET',
dataType: 'json',
}).done(function(){
console.log('success');
}).fail(function(data){
alert(data);
}).always(function(){
alert('finished');
})
});
如果我不使用if
與Yii::$app->request->isAjax
控制器只呈現帶有數據的JSON。
P.D #search-box
的內容已成功通過。
編輯@SilverFire
不要有一些垃圾堆
["HTTP_X_REQUESTED_WITH"] => not defined,
["HTTP_ACCEPT"]=> string(74) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
["CONTENT_TYPE"] =>not defined,
["HTTP_CONTENT_TYPE"] =>not defined,
["REQUEST_METHOD"]=> string(3) "GET",
["HTTP_X_HTTP_METHOD_OVERRIDE"] =>not defined,
你能證明你的'$ _SERVER'傾倒? – SilverFire
@SilverFire你需要看到任何特定的變量?我在工作中在開發服務器上進行編程。所以我寧願不顯示所有$ _SERVER – Sageth
夠公平。您可以顯示HTTP_X_REQUESTED_WITH,HTTP_ACCEPT,CONTENT_TYPE,HTTP_CONTENT_TYPE,REQUEST_METHOD,HTTP_X_HTTP_METHOD_OVERRIDE – SilverFire