2015-08-29 69 views
6

我正在使用框架Yii2和他們的Pjax實現。控制器代碼添加一個頭部「X-Pjax-Url」,該頭部已成功傳遞給響應。Yii2和Pjax重定向在Internet Explorer中不起作用?

Pjax的重定向是通過Chrome,Safari和Firefox中的pjax.js方法處理的,但在IE11中失敗。

當我使用包含的調試器並查看響應標題時,標題存在並且url正確,但IE11未讀取它。

響應錯誤: enter image description here

的響應頭: enter image description here

任何想法?

**更新15年9月7日

控制器代碼:

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

下面是關於如何使用這個方法,該方法是快捷方式本的文檔(yii\web\Controller)的鏈路( yii\web\Response)方法。

再次說明,這可以在Chrome,Safari和Firefox中使用,而不是IE11。

我在用這個片段來驗證xhr響應,它返回null。

// pjax complete 
$(document).on('pjax:complete', function (event, xhr, textStatus, options) { 
    alert(JSON.stringify(xhr)); 
    var url = xhr.getResponseHeader('X-Pjax-Url'); 
    if (url) { 
     window.location = url; 
    } 
}); 

在上面的圖片中,您可以看到標題實際上正在發送,看起來好像IE正在正確讀取。

Pjax.js文件實際上處理重定向,我只是用於調試目的的片段。

+0

給您的代碼示例 – ankitr

+0

如果你提供這將是有益的碼。 – TheLuminor

+0

遠射,但我們正在追逐僅在IE11(和10)中破解的XHR問題。在我們的情況下,讀取在連字符/短劃線處切斷。在過去的幾周裏開始。 HTTPS://social.msdn。microsoft.com/Forums/en-US/061721c1-68a5-4f38-83ec-d7e4b596cc1d/problem-parsing-xml-with-a-hyphen-in-ie11?forum=iewebdevelopment –

回答

1

我可以驗證此錯誤。 但我不知道,如果這是一個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中打開一個問題並尋求支持。

這是btw。其中具有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. 
} 
+0

我發現,如果你正在做一個重定向狀態碼爲200例如'return $ this-> redirect(['user/view','id'=> 1],200);'它也適用於IE。如果您使用標準302,則它在IE中不起作用。 有一件事是可以做到的,即在Pjax請求狀態碼設置爲200而不是302重定向,那麼它也將在IE中工作。但是你應該在yii2 github中打開一個問題,所以這是由dev的檢查。 – BHoft

+0

我從來沒有想過嘗試一個不同的狀態代碼。代碼改變會有其他副作用嗎? –

+0

我確認狀態碼200確實有效。我會在那裏開一個問題。 –

相關問題