Yii2:isAjax返回false

鼠尾草

我使用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');
    })
});

如果我不ifYii::$app->request->isAjax控制器一起使用则只需使用数据呈现JSON。

PD#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,
银火

好吧,由于某些原因,您的浏览器不会将HTTP_X_REQUESTED_WITH标头发送到服务器。

它猜测可能与以下内容有关:缺少X-Requested-With:XMLHttpRequest(导致200 OK,但显示为错误?),并且跨域AJAX不发送X-Requested-With标头

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章