我尝试创建一个页面,在单击复选框时更新表格中的特定记录字段(理想情况下不刷新页面)。我认为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
答案 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);