Yii2 jQuery无法在IE11

时间:2015-05-20 13:36:57

标签: jquery yii2 internet-explorer-11

问题

我尝试创建一个页面,在单击复选框时更新表格中的特定记录字段(理想情况下不刷新页面)。我认为jQuery / AJAX对我有用 显然不是。

我一直在努力解决这个问题,所以我决定将其缩小并真正简化它以弄清楚什么不起作用。表格的更新很好(来自Chrome),不令人耳目一新。并且它都不适用于IE11。

它目前托管在我的本地计算机上,所以我的一部分想知道它是否与它有关,但是jQuery在我以同样方式托管的其他网站上运行良好。 / p>

Yii2控制器操作

public function actionTest() {
    return 'This is just a static test';
}

(非常基本的)php页面: 这是页面呈现后的源

<script src="/assets/ddb27309/jquery.js"></script>
<script src="/assets/eeb0e590/yii.js"></script>

<div id="loadToMe"> </div>

<script type="text/javascript">
    $(document).ready( function() {
        $('#loadToMe').load('/mycontroller/testing');
    });
</script>

现在通常我希望当前空的div用字符串This is just a static test填充 - 很简单。

然而

Chrome&amp; FireFox:重定向到{mysite} / mycontroller / testing并显示给定的文字。

IE 11:给我以下错误消息,但没有其他事情发生:

XMLHttpRequest: Network Error 0x2f76, Could not complete the operation due to error 00002f76.

当我使用$.get$.post$.ajax(具有各种语法差异)和一个例外时,这两种浏览器的行为是相同的 - IE11为POST提供了不同的错误消息

XMLHttpRequest: Network Error 0x800c0008, The download of the specified resource has failed.

我已尝试过各种来源的各种各样的事情,包括(但不限于 - 我无法记住我曾尝试过的所有事情)以下内容:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />

<meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" />

AddDefaultCharset utf-8

使用IE开发人员工具中的网络选项卡,我分别使用POST和GET。

Protocol    Method  Result      Type        Received    Taken   Initiator       Wait    Start   Request Response    Cache read  Gap‎‎
HTTP        POST    302         text/html   464 B       47 ms   XMLHttpRequest  0       16      0       31          0           2902
HTTP                (Aborted)   text/html   506 B       < 1 ms  XMLHttpRequest  2902    0       0       0           0           47

链接的js文件是来自Yii2的文件(并且是$.load在Chrome中工作所需的最低文件) - 我没有以任何方式触及它们。

jQuery版本是v2.1.3
Yii2版本是v2.0.3

4 个答案:

答案 0 :(得分:1)

IE11返回错误:

XMLHttpRequest: Network Error 0x800c0008, The download of the specified resource has failed.

我的解决方案:Yii2控制器SET操作:

use yii\helpers\Json;

public function actionTest() {
    $out['message'] = 'This is just a static test';
    echo Json::encode($out);
    \Yii::$app->end();
}

OR

public function actionTest() {
        echo 'This is just a static test';
        \Yii::$app->end();
    }

从控制器(PHP代码)中删除所有重定向并返回。($ this-&gt; redirect(“...”))

答案 1 :(得分:0)

事实证明我有localeUrls,这就是问题!

我的网址以当前语言为前缀(即myurl.com/en/controller/action)

当我尝试加载/mycontroller/testing时,它似乎被UrlManager重定向到/en/mycontroller/testing,因此重定向而不是加载(至少那是我的#m; m从中了解 - 我对Yii2相对较新

如果有人能指出我会更详细地解释这一点,我会感激不尽,但至少现在我可以继续我的项目。

由于

答案 2 :(得分:-1)

我重载了下响应类(我重载了下一个类的响应)

class Response extends \yii\web\Response{
  public function redirect($url, $statusCode = 302, $checkAjax = true)
  {
    if ($checkAjax && (Yii::$app->getRequest()->getIsPjax() || Yii::$app->getRequest()->getIsAjax())) 
    {
        $statusCode = 200;
    }
    return parent::redirect($url, $statusCode, $checkAjax);
  }
}

答案 3 :(得分:-2)

尝试使用状态码200:

return $this->redirect(['linker/checkout'], 200);