【问题标题】:Yii2: isAjax returns falseYii2: isAjax 返回 false
【发布时间】: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');
    })
});

如果我不将ifYii::$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
  • 编辑了问题。

标签: php jquery ajax yii2


【解决方案1】:

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

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

【讨论】:

  • 我尝试在 ajax 请求中添加 X-Requested-With 标头,但仍然不起作用。
  • 在 ajax 请求中添加后,您是否在 PHP 端看到此标头?
  • 这是服务器猜测它是 Ajax 请求的唯一方法,因此问题与大多数 XHR 请求有关。您能否显示来自浏览器调试控制台的屏幕截图或文本转储以及有关请求的详细信息?
猜你喜欢
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 2015-08-02
  • 2012-05-17
  • 2013-10-26
  • 2013-01-06
相关资源
最近更新 更多