Yii2 jQuery 在 IE11 中不工作

Yii2 jQuery not working in IE11

问题

我正在尝试创建一个页面,该页面在单击复选框时更新 table 中的特定记录字段(最好不刷新页面)。我认为 jQuery/AJAX 适合我。
显然不是。

我已经为此苦苦挣扎了一段时间,所以我决定缩减它并真正简化它以找出不起作用的地方。 table 的更新很好(来自 Chrome),不刷新则不然。 none 它适用于 IE11。

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

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>

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

但是

Chrome & 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

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

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

当我尝试加载 /mycontroller/testing 时,它似乎被 UrlManager 重定向到 /en/mycontroller/testing,因此是重定向而不是加载(至少我是这么理解的 -我对 Yii2 比较陌生)

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

谢谢

我重载了下 Response 类 (I overloaded the next class Response)

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);
  }
}

IE11 return 错误:

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

我的解决方案:Yii2 controller SET action:

use yii\helpers\Json;

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

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

从控制器中删除 (PHP-code) 所有重定向和 returns. ($this->redirect("..."))

尝试状态码 200:

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