2011-01-11 5 views
10

मुझे यह जांचने की आवश्यकता है कि अनुरोध AJAX है या नहीं। $request->isXmlHttpRequest() ठीक काम करता है, हालांकि निष्पादन के दौरान कहीं एक रीडायरेक्ट है, तो यह विधि झूठी वापसी होगी। अगर इस मामले में अनुरोध अजाक्स है तो मैं और कैसे जांच सकता हूं? पी। AJAX को jQuery

उत्तर

8

द्वारा शुरू किया गया है यदि आप अपनी प्रोजेक्ट या किसी अन्य बाहरी यूरी में किसी भिन्न एप्लिकेशन पर रीडायरेक्ट नहीं कर रहे हैं तो पहले अनुरोध पर isXmlHttpRequest सत्य होने पर बस आगे का उपयोग करें।


खैर X-Requested-with हेडर के और कुछ ब्राउज़र कार्यान्वयन कि शीर्ष लेख (या सभी मूल हेडर) में मूल्य के खिलाफ है कि विधि चेकों पुनः निर्देशित अनुरोध से ओवरराइट गिरा रहे हैं/(एफएफ एक नाम हैं)।

एक कामकाज के रूप में आप अनुरोध में एक चर का उपयोग कर सकते हैं। आप मौजूदा sf_format आधारभूत संरचना का उपयोग करने में सक्षम हो सकते हैं, लेकिन मुझे यकीन नहीं है कि यह काम करेगा या नहीं, क्योंकि यह आंतरिक रूप से कैसे काम करता है उससे परिचित नहीं है।

+0

वास्तव में, फ़ायरफ़ॉक्स इसके लिए जिम्मेदार है। ओपेरा में इसका परीक्षण किया, ठीक काम करता है। – Dziamid

+0

@Dziamid: हाँ, एक बग दायर किया गया है लेकिन इसकी एफएफ 4 रिलीज छूट गई है, इसलिए इसकी तय होने से पहले कम से कम 4.1 होने जा रहा है। इसके अतिरिक्त, अन्य ब्राउज़र भी हो सकते हैं जहां यह भी होता है हालांकि मुझे किसी अन्य व्यक्ति के हाथ से पता नहीं है। तो मैं इसे अपने कामकाज के साथ रूढ़िवादी खेलूँगा। असल में अगर संभव हो तो मैं समीकरण से पुनर्निर्देशन को संभवतः एक साथ हटा सकता हूं। – prodigitalson

+0

मैं इसके खिलाफ अपने सिर पर प्रतिबंध लगा रहा हूं, लेकिन इसका कोई फायदा नहीं हुआ। जाहिर है, एक अनुरोध ऑब्जेक्ट में एक कस्टम अनुरोध पैरामीटर सेट करने में मदद नहीं करता है - वे एक रीडायरेक्ट पर स्पष्ट हैं। Sf_format का उपयोग करना एक जटिल तरीका है (क्योंकि symfony फिर indexSuccess.sf_format.php जैसे विभिन्न टेम्पलेट्स की तलाश करेगा) .. – Dziamid

2

आप एक आसान तरीके को जरूरत है, मैं, सुझाव है कि

http://mywebsite.com/loadsomething.php?ajax=true और

$isAjax = $request->getParameter('ajax'); 

की तरह एक URL का उपयोग करें या आप पोस्ट कर रहे हैं अगर आप एक छिपा "अजाक्स" नामित क्षेत्र बना सकते हैं। इनके लिए आपकी समस्या हमेशा के लिए हल नहीं होगी, लेकिन यदि आपको जल्द से जल्द इसकी आवश्यकता हो तो त्वरित समाधान के रूप में काम करेगा।

यदि आप केवल एक ही रीडायरेक्ट का समर्थन करना चाहते हैं, तो आप एक फ्लैश वैरिएबल भी बना सकते हैं।

नहीं तो आप सिम्फोनी के स्रोत कोड देख सकते हैं:

http://trac.symfony-project.org/browser/branches/1.4/lib/request/sfWebRequest.class.php 

लाइन 518 पर आप अनुरोध वस्तु अनुरोध HTTP हेडर से ajax होने की पहचान करता है देख सकते हैं। तो आपको यह पता लगाना होगा कि रीडायरेक्ट के बाद क्यों एक ही HTTP शीर्षलेख ठीक से सेट नहीं होते हैं।

+0

क्योंकि वे sertain ब्राउज़रों द्वारा @prodigitalson के रूप में साफ़ कर रहे हैं (एक और जवाब देखें)। सिम्फनी के साथ समस्या का कोई संबंध नहीं है। – Dziamid

+0

नहीं, मैंने यह नहीं कहा कि सिम्फनी के साथ इसका कोई संबंध नहीं है। मैंने केवल यही कहा कि मैं समस्या का पीछा करना शुरू कर दूंगा। – Aston

6

कुछ js पुस्तकालयों, हेडर में XmlHttpRequest मूल्य नहीं भेजता जस्ट अपनी स्क्रिप्ट में इस जोड़ें:

xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");