2015-08-29 11 views
6

मैं पीजीएक्स के कार्यान्वयन के साथ ढांचे Yii2 का उपयोग कर रहा हूं। नियंत्रक कोड एक शीर्षलेख "एक्स-पजाक्स-यूआरएल" जोड़ता है जिसे सफलतापूर्वक प्रतिक्रिया के साथ पारित किया जाता है।वाईआई 2 और पजाक्स रीडायरेक्ट इंटरनेट एक्सप्लोरर में काम नहीं कर रहा है?

Pjax के लिए रीडायरेक्ट को pjax.js विधियों के माध्यम से क्रोम, सफारी और फ़ायरफ़ॉक्स में ठीक से ठीक किया जाता है, लेकिन IE11 में विफल रहता है।

जब मैं शामिल डीबगर का उपयोग करता हूं और प्रतिक्रिया शीर्षलेख देखता हूं, तो शीर्षलेख होता है और यूआरएल सही है, लेकिन IE11 इसे पढ़ नहीं रहा है।

प्रतिक्रिया त्रुटि: enter image description here

प्रतिसाद शीर्षलेख: enter image description here

कोई भी विचार?

** अद्यतन 9/7/15

नियंत्रक कोड:

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

यहाँ कैसे इस विधि जो इस के लिए एक शॉर्टकट है उपयोग करने के लिए पर डॉक्स (yii\web\Controller) के लिए एक लिंक (है yii\web\Response) विधि।

एक बार फिर, यह क्रोम, सफारी और फ़ायरफ़ॉक्स में काम करता है, केवल आईई 11 नहीं।

मैं xhr प्रतिक्रिया को सत्यापित करने के लिए इस स्निपेट का उपयोग कर रहा था, जो शून्य लौटाता है।

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

उपर्युक्त छवियों में, आप देख सकते हैं कि हेडर वास्तव में भेजा जा रहा है, ऐसा लगता है कि आईई इसे ठीक से पढ़ रहा है।

Pjax.js फ़ाइल वास्तव में रीडायरेक्ट को संभालती है, मैं बस डिबगिंग उद्देश्यों के लिए स्निपेट का उपयोग कर रहा था।

+0

अपने कोड नमूना – ankitr

+0

देना होगा अपने कोड। – TheLuminor

+0

लंबे शॉट, लेकिन हम एक एक्सएचआर मुद्दे का पीछा कर रहे हैं जो केवल आईई 11 (और 10) में टूट गया है। हमारी स्थिति में, पढ़ाई हाइफ़न/डैश पर कटौती। पिछले कुछ हफ्तों में शुरू हुआ। https: //social.msdn।microsoft.com/Forums/en-US/061721c1-68a5-4f38-83ec-d7e4b596cc1d/problem-parsing-xml-with-a-hyphen-in-ie11?forum=iewebdevelopment –

उत्तर

1

मैं इस त्रुटि को सत्यापित कर सकता हूं। लेकिन मेरे पास कोई संकेत नहीं है यदि यह एक आईई त्रुटि है या एक yii2 त्रुटि है।

एकमात्र चीज जो मुझे पता है कि रीडायरेक्ट काम करता है अगर मैं "वापसी" का उपयोग नहीं करता हूं और सामान्य दृश्य को अतिरिक्त रूप से रीडायरेक्ट में प्रस्तुत करता हूं जो पीजेक्स अनुरोध करता है। उदा। मैंने इसे अपने इंडेक्स एक्शन में परीक्षण किया जो पीजेक्स सक्षम के साथ ग्रिड प्रदर्शित कर रहा है। फिर मैं उपयोगकर्ता दृश्य में एक पीजेक्स अनुरोध (यहां कॉलम के लिए एक प्रकार) पर रीडायरेक्ट करता हूं। (सिर्फ एक उदाहरण के रूप में)

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. 
} 
+0

मुझे पता चला कि यदि आप रीडायरेक्ट कर रहे हैं स्टेटस कोड 200 उदाहरण के साथ 'इसे वापस करें-> रीडायरेक्ट ([' उपयोगकर्ता/दृश्य ',' आईडी '=> 1], 200);' यह आईई में भी काम करता है। यदि आप मानक 302 का उपयोग करते हैं तो यह IE में काम नहीं करता है। एक चीज जिसे बनाया जा सकता है, कि Pjax पर अनुरोध करता है कि रीडायरेक्ट पर 302 के बजाय स्टेटस कोड 200 पर सेट हो गया है, तो यह आईई में भी काम करेगा। लेकिन आपको yii2 github में कोई समस्या खोलनी चाहिए ताकि यह देव की जांच हो। – BHoft

+0

मैंने कभी भी एक अलग स्थिति कोड का प्रयास करने के लिए सोचा नहीं। क्या कोड परिवर्तन के अन्य दुष्प्रभाव होंगे? –

+0

मैंने पुष्टि की कि स्टेटस कोड 200 काम करता है। मैं वहां एक मुद्दा खोलूंगा। –

संबंधित मुद्दे