【发布时间】:2016-03-14 14:52:29
【问题描述】:
我正在使用 ajax 在 yii2 中开发一个搜索栏。问题是Yii::$app->request->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 您需要查看任何特定变量吗?我在工作中在开发服务器上编程。所以我宁愿不显示所有 $_SERVER
-
很公平。你能显示 HTTP_X_REQUESTED_WITH、HTTP_ACCEPT、CONTENT_TYPE、HTTP_CONTENT_TYPE、REQUEST_METHOD、HTTP_X_HTTP_METHOD_OVERRIDE
-
编辑了问题。