Yii2和Pjax重定向无法在Internet Explorer中运行?

时间:2015-08-29 20:01:40

标签: internet-explorer yii2 pjax

我正在使用框架Yii2及其Pjax的实现。控制器代码添加了一个成功传递响应的标题“X-Pjax-Url”。

Pjax的重定向通过pjax.js方法在Chrome,Safari和Firefox中处理得很好,但在IE11中失败。

当我使用包含的调试器并查看响应头时,标题就在那里,并且url是正确的,但是IE11没有读取它。

响应错误: enter image description here

响应标头: enter image description here

有什么想法吗?

**更新9/7/15

控制器代码:

core

以下是有关如何使用此方法的文档(yii\web\Controller)的链接,该方法是此(yii\web\Response)方法的快捷方式。

再一次,这适用于Chrome,Safari和Firefox,而不是IE11。

我正在使用此代码段验证xhr响应,该响应返回null。

return $this->redirect(['secure/dashboard']);

在上面的图片中,您可以看到标题实际上正在发送,就好像IE正在正确读取它一样。

Pjax.js文件实际上处理重定向,我只是使用该代码段进行调试。

1 个答案:

答案 0 :(得分:2)

我可以验证此错误。 但我不知道这是IE错误还是yii2错误。

我唯一知道重定向有效,如果我不使用"返回"并在执行pjax请求的重定向之外再渲染普通视图。 例如我在我的索引操作中测试了它,该操作显示了启用了pjax的网格。然后我将pjax请求(这里是列的排序)重定向到用户视图。 (仅作为示例)

public function actionIndex()
{
    if (Yii::$app->getRequest()->getIsPjax()) {
        //return $this->redirect(['user/view','id'=>1]); // doesn't forword in IE.
        $this->redirect(['user/view','id'=>1]); // forwards also in IE.
    }

    $searchModel = new UserSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

因为如果正常视图另外渲染,前向工作,我猜想有些东西丢失了(很可能是一些标题)。我会在yii2 github中打开一个问题并寻求支持。

这是顺便说一句。重定向与pjax一起更改的问题https://github.com/yiisoft/yii2/issues/4395

编辑:快速解决方法是设置状态代码200而不是默认值302

if (Yii::$app->getRequest()->getIsPjax()) {
    return $this->redirect(['user/view','id'=>1], 200); // forwards also in IE.
}