2009-05-07 10 views
15

से HTTP स्थिति का पता लगाने के मैं एक स्क्रिप्ट है, जो मेरे नियंत्रण से बाहर तैनात किया जा सकता में पता लगाने के लिए चाहते हैं, चाहे पेज 200, 404 या 500 आदिकैसे जावास्क्रिप्ट

यह कर सकते हैं 'का एक HTTP स्थिति के साथ दिया गया था टी नहीं किया जाएगा, है ना?

+0

आप पृष्ठ सामग्री को देख सकते हैं कि इसमें "नहीं मिला" या "त्रुटि" जैसे वाक्यांश हैं, लेकिन शायद यह संभव है कि आप कर सकें। – rjmunro

उत्तर

7

क्या पृष्ठ स्वयं को XMLHttpRequest बना रहा है (location.href या document.URL का उपयोग करके) और आपको प्राप्त होने वाली HTTP स्थिति की जांच करें। मेरे लिए सुंदर पोर्टेबल तरीका लगता है। आप ऐसा क्यों करेंगे, मेरी समझ से परे है;)

+0

हां यह वह समाधान है जिसके लिए मैं जा रहा हूं - इसके अतिरिक्त मैंने क्लाइंट को पूरे पृष्ठ को दो बार डाउनलोड करने के लिए एक HTTP हेड अनुरोध किया है। मैं ऐसा क्यों करना चाहता हूं? एक .js फ़ाइल सोचें जिसे मैं वेबसाइट प्रशासकों के लिए अपनी वेबसाइट पर स्थापित करने के लिए लिख रहा हूं। – EoghanM

+0

यह खतरनाक है, क्योंकि दूसरा अनुरोध सर्वर को अप्रत्याशित तरीकों से बदल सकता है (लेकिन पृष्ठ को डबल-पोस्ट करना), आदि साथ ही, एक ही अनुरोध एक बार सफल हो सकता है, लेकिन अगली बार विफल हो सकता है। – WhyNotHugo

+1

मैं उलझन में हूं, न तो @EoghanM या मुझे पोस्ट का उल्लेख है। वह यह भी कहता है कि उसने सिर का इस्तेमाल किया था। जीईटी या हेड का उपयोग सुरक्षित होना चाहिए क्योंकि वे बेवकूफ तरीके हैं और साइड इफेक्ट्स का कारण नहीं बनना चाहिए। – anddoutoi

1

पेज ए जावास्क्रिप्ट हो सकता है जो पेज बी को AJAX के माध्यम से लोड करता है और इसे दस्तावेज़.write या पॉप-अप विंडो में प्रदर्शित करता है या फिर।

ऐसी रणनीति में, आप AJAX हैंडलर में सफलता/विफलता के लिए रिटर्न कोड देख सकते हैं और स्थिति के आधार पर आउटपुट विंडो में अलग-अलग चीजें भेज सकते हैं।

अधिकांश अजाक्स पुस्तकालयों Prototype.js

+0

ऐसा लगता है कि आप transport.status के साथ सही रास्ते पर हैं - आदर्श रूप में मैं एक और HTTP अनुरोध से बचना चाहता हूं, लेकिन शायद यह एकमात्र तरीका है? – EoghanM

+0

मुझे यह जानने के लिए पर्याप्त अनुभव नहीं हुआ कि यह एकमात्र तरीका है या नहीं। यदि आपने दिए गए उत्तर का उपयोग किया है, तो आपको जावास्क्रिप्ट के सुरक्षा मॉडल का पालन करने और केवल उसी साइट से पृष्ठों को लाने की आवश्यकता होगी। यह प्रॉक्सी के चालाक उपयोग से, हालांकि, चारों ओर मिल सकता है। – Paul

-2

में Ajax.Request साथ वापसी कोड की जांच करने का तरीका प्रदान ....

उदाहरण "transport.status" के लिए देखें जावास्क्रिप्ट की जरूरत पता करने के लिए क्यों करता है इस? ऐसा लगता है कि इसे कस्टम 404 पेज पर एम्बेड करने के लिए और अधिक समझदारी होगी। अभिभावक पृष्ठ की HTTP स्थिति का पता लगाने की कोई आवश्यकता नहीं है (मुझे नहीं लगता कि यह संभव है - हो सकता है कि प्रत्येक लोड के बाद खुद को एजेक्स कॉल करें, लेकिन यह सिर्फ मूर्ख है)। यदि कोड निष्पादित किया जा रहा है, इसका होने की गारंटी 404

+1

मैं कस्टम 404 पेज नहीं बना सकता क्योंकि स्क्रिप्ट 'मेरे नियंत्रण से बाहर तैनात की जा रही है' - मैं HTML नहीं बना रहा हूं और 404 पेज मेरी साइट पर नहीं होगा :) – EoghanM

+0

ब्राउज़र एक्सटेंशन बनाना और चलाना एक ही समस्या - यदि वर्तमान यूआरएल 404s और किसी निश्चित साइट पर किसी सामान्य पृष्ठ की गलत वर्तनी है, तो मैं उस पृष्ठ पर रीडायरेक्ट करने का प्रयास कर रहा हूं। मैं AJAX समाधान के साथ जा रहा हूं, क्योंकि मुझे विश्वास नहीं है कि पहले और दूसरे अनुरोध के बीच मिलीसेकंड में अक्सर एक पृष्ठ की हटाना स्थिति बदल जाएगी। –

-2

मैं हाल ही में पाया यह (करने के लिए क्रेडिट: hunlock) कैसे करने के लिए एक

AJAX.getAllResponseHeaders() - एक स्ट्रिंग के रूप रिटर्न में सभी मौजूदा हेडर उपयोग। AJAX.getResponseHeader ("headerLabel") - अनुरोधित हेडर का मान देता है।

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