php - Yii2:isAjax 返回 false

标签 php jquery ajax yii2

我正在使用 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 一起使用, Controller 只会渲染带有数据的 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,

最佳答案

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

猜测可能与:Missing X-Requested-With: XMLHttpRequest (causes 200 OK But Shows as Error?)有关和 Cross-Domain AJAX doesn't send X-Requested-With header

关于php - Yii2:isAjax 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34177008/

相关文章:

php - 是否可以直接在 MYSQL 查询中而不是在 PHP 中执行此算术运算?

javascript - 如何保持数据函数和变量DRY?

jquery - removeData() jquery 方法不起作用

javascript - 动态增长文本输入数组 (HTML/JavaScript)

php - 单击 +1 增加 MySQL 值

javascript - 如何确保加载的文件可以被js代码检测到

php - 从性能的角度来看,将 MySQL 临时表用于高使用率的网站功能的效率如何?

PHP - 迭代文件并分解 JSON 文本 block

php - Doctrine 对象是巨大的

jquery,css在长时间执行函数之前不会改变