XML DOM - XMLHttpRequest ऑब्जैक्ट

एक्सएमएलएचआरएक्स ऑब्जैक्ट

XMLHttpRequest ऑब्जैक्ट HTTP प्रोटोकॉल पर पूर्ण उपयोग की सुविधा प्रदान करता है, जिसमें POST और HEAD अनुरोधों के साथ-साथ सामान्य GET अनुरोध की क्षमता शामिल है। XMLHttpRequest वेब सर्वर के प्रतिसाद को सिंक्रोनस या असिंक्रोनस रूप से प्रतिफलित कर सकता है और सामग्री को टेक्स्ट या एक DOM दस्तावेज़ के रूप में प्रतिफलित कर सकता है。

यद्यपि XMLHttpRequest का नाम है, यह XML दस्तावेज़ों के साथ ही बन्धित नहीं है: यह किसी भी रूप के टेक्स्ट दस्तावेज़ को प्रस्तुत कर सकता है。

XMLHttpRequest ऑब्जैक्ट नाम की AJAX के Web एप्लिकेशन आर्किटेक्चर के एक महत्वपूर्ण कार्यकलाप है।

ब्राउज़र समर्थन

XMLHttpRequest ने सभी आधुनिक ब्राउज़रों द्वारा अच्छे समर्थन प्राप्त किया है। एकमात्र ब्राउज़र निर्भरता XMLHttpRequest ऑब्जैक्ट के निर्माण से संबंधित है। IE 5 और IE 6 में, IE-विशिष्ट ActiveXObject() बनारा का उपयोग करना आवश्यक है। जैसा कि एक्सएमएलएचआरएक्स ऑब्जैक्ट इस चयन में प्रस्तुत किया गया।

W3C नियमन

XMLHttpRequest ऑब्जेक्ट नियमित नहीं है, लेकिन W3C ने इसके नियमन का काम शुरू किया है, इस दस्तावेज़ में दिए गए सामग्री सभी नियमन कार्यविधियों पर आधारित है।

वर्तमान XMLHttpRequest अभियोग बहुत हद तक एकजुट है। लेकिन मानक से थोड़ा अलग है। उदाहरण के लिए, एक अभियोग शून्य null वापस कर सकता है, जबकि मानक के अनुसार एक खाली शब्द रूपों का सामग्री होना चाहिए, या अभियोग रेडीस्टेट 3 को निर्धारित कर सकता है और नहीं कि सभी जवाब शीर्षक उपलब्ध होने की गारंटी है।

गुण

readyState

HTTP अनुरोध की स्थिति।एक XMLHttpRequest पहली बार बनाया जाता है तो, इस गुण का मूल्य 0 से शुरू होता है और जब तक पूर्ण HTTP जवाब प्राप्त नहीं होता, तब तक इस मूल्य को 4 तक बढ़ाया जाता है।

5 स्थितियों में से प्रत्येक को एक संबद्ध अनौपचारिक नाम है, नीचे दिए गए सारणी में स्थिति, नाम और अर्थ दिया गया है:

स्थिति नाम वर्णन
0 Uninitialized शुरूआती स्थिति।XMLHttpRequest ऑब्जेक्ट बनाया गया है या abort() विधि द्वारा रीसेट किया गया है।
1 Open open() विधि बुलाया गया है, लेकिन send() विधि बुलाया नहीं गया है। अनुरोध अभी तक भेजा नहीं गया है।
2 Sent Send() विधि बुलाया गया है, HTTP अनुरोध वेब सर्वर पर भेजा गया है। जवाब अभी तक प्राप्त नहीं हुआ है।
3 Receiving सभी जवाब शीर्षक प्राप्त कर लिए गए हैं। जवाब शरीर का प्राप्त करना शुरू हुआ है, लेकिन अभी तक पूरा नहीं हुआ है।
4 Loaded HTTP जवाब पूरी तरह से प्राप्त कर लिया है।

readyState का मूल्य घटता नहीं है, जब तक कि एक अनुरोध के दौरान abort() या open() विधि को बुलाया नहीं जाता। हर बार जब इस गुण का मूल्य बढ़ता है, तो onreadystatechange इवेंट हैंडलर ट्रिगर होता है।

responseText

अब तक सर्वर द्वारा प्राप्त किए गए जवाब शरीर (शीर्षक को छोड़कर), या अगर अभी तक डाटा प्राप्त नहीं हुआ है, तो एक खाली शब्द रूपों का सामग्री है।

यदि readyState 3 से कम है, तो यह गुण एक खाली शब्द रूपों का सामग्री है। जब readyState 3 है, तो यह गुण प्राप्त की गई जवाब का हिस्सा वापस करता है। जब readyState 4 है, तो यह गुण पूर्ण जवाब शरीर को सहेजता है।

यदि जवाब में उत्तर शरीर के लिए निर्दिष्ट अक्षर संकेत शीर्षक है, तो इस संकेत का उपयोग करें। अन्यथा, Unicode UTF-8 का उपयोग करने का अनुमान है।

responseXML

अनुरोध के जवाब को, XML में विश्लेषण किया और इसे डॉक्युमेंट ऑब्जेक्टवापस दें।

status

सर्वर द्वारा वापस दिया जाता है HTTP स्टेटस कोडसबसे, 200 के रूप में सफलता, और 404 के रूप में "Not Found" त्रुटि। readyState 3 से कम होने पर इस गुण को पढ़ने से एक अचरज हो सकता है।

statusText

यह गुण नाम के बजाय संख्या के द्वारा अनुरोध के HTTP के स्टेटस को सेट करता है। यानी, जब स्टेटस 200 है तो यह "OK" होता है, जब स्टेटस 404 है तो यह "Not Found" त्रुटि होता है। status गुण के समान, readyState 3 से कम होने पर इस गुण को पढ़ने से एक अचरज हो सकता है।

इवेंट हैंडलर

onreadystatechange

कभी-कभी readyState गुण के बदलाव के समय बुलाया जाने वाला इवेंट हैंडलर फ़ंक्शन। जब readyState 3 है, तो यह कई बार बुलाया जा सकता है।

विधि

abort()

वर्तमान जवाब को रद्द करें, कनेक्शन को बंद करें और सभी अविराम नेटवर्क गतिविधियों को समाप्त करें।

इस विधि XMLHttpRequest ऑब्जैक्ट को readyState 0 की स्थिति में रीसेट करता है और सभी अविराम नेटवर्क गतिविधियों को रद्द करता है। उदाहरण के लिए, अगर अनुरोध बहुत लंबा चला गया और जवाब अब आवश्यक नहीं है, तो इस विधि को बुलाया जा सकता है।

getAllResponseHeaders()

HTTP जवाब शीर्षक को अनवयवत शब्द के रूप में वापस दें।

अगर readyState 3 से कम है, तो इस विधि को null वापस देता है। अन्यथा, यह सर्वर द्वारा भेजे गए सभी HTTP जवाब शीर्षकों को वापस देता है। शीर्षक एक अकेले शब्द के रूप में वापस दिया जाता है, एक पंक्ति पर एक शीर्षक। प्रत्येक पंक्ति को "\r\n" से अलग करता है।

getResponseHeader()

निर्दिष्ट HTTP जवाब शीर्षक का मूल्य वापस दें। इसका पारामीटर वापस देने वाला HTTP जवाब शीर्षक का नाम है। इस शीर्षक के नाम को किसी भी आकार में दिया जा सकता है, और जवाब शीर्षक के तुलना में आकार निरपेक्ष है।

इस विधि का वापसी मूल्य है निर्दिष्ट HTTP जवाब शीर्षक का मूल्य, अगर इस शीर्षक को नहीं मिला या readyState 3 से कम है तो खाली शब्द रहता है। अगर कई निर्दिष्ट नाम के शीर्षकों को मिला, तो उनके मूल्यों को जोड़ कर वापस दिया जाता है और शीर्षकों के मूल्यों को कमा कर और खाली जगहों से अलग करके वापस दिया जाता है।

open()

HTTP अनुरोध पारामीटरों को शुरू करें, जैसे URL और HTTP विधि, लेकिन अनुरोध भेजें नहीं।

send()

HTTP अनुरोध भेजें, open() विधि को दिए गए पारामीटरों के साथ, और इस विधि को दिए गए वैकल्पिक अनुरोध शरीर के साथ।

setRequestHeader()

एक खुला लेकिन अभी भेजा नहीं हुआ अनुरोध को या उसमें एक HTTP अनुरोध सेट करें या जोड़ें।

XMLHttpRequest.open()

HTTP अनुरोध पारामीटरों को चालू करें

व्याकरण

open(method, url, async, username, password)

method पारामीटर अनुरोध के लिए उपयोग के HTTP विधि है। मानों में GET, POST और HEAD शामिल हैं।

url पारामीटर अनुरोध का मुख्यांश है। अधिकांश ब्राउज़र एक समान स्रोत सुरक्षा रणनीति का अनुसरण करते हैं और इस URL को शीर्षक टेक्स्ट के साथ एक ही मुख्य नाम और पोर्ट से समान होना चाहिए।

async पारामीटर इंगित करता है कि अनुरोध को असंचालित रूप से चलाया जाना चाहिए। यदि यह पारामीटर false है, तो अनुरोध संचालित है, और send() के लिए आमंत्रण करने से अगले आमंत्रण अवधी बाधित होगी, जब तक प्रतिक्रिया पूरी तरह से प्राप्त नहीं होगी। यदि यह पारामीटर true है या छोड़ दिया गया है, तो अनुरोध असंचालित है, और आमतौर पर onreadystatechange इवेंट हैंडलर की आवश्यकता है।

username और password पारामीटर वृद्धिपूर्ण हैं, वृद्धि के लिए अधिकार प्रदान करते हैं। यदि इनको निर्दिष्ट किया गया है, तो ये url द्वारा निर्दिष्ट किए गए किसी भी अधिकार को ओवरराइड करेंगे।

व्याख्या

यह विधि अनुरोध पारामीटरों को भेज() विधि के बाद के उपयोग के लिए चालू करती है। यह readyState को 1 सेट करती है, पहले निर्दिष्ट सभी अनुरोध शीर्षकों को मिटा देती है, और पहले प्राप्त सभी प्रतिक्रिया शीर्षकों को मिटा देती है, और responseText, responseXML, status और statusText पारामीटरों को उनके डिफ़ॉल्ट मानों पर सेट करती है। जब readyState 0 है (XMLHttpRequest ऑब्जेक्ट के निर्माण के बाद या abort() विधि के आमंत्रण के बाद) और जब readyState 4 है (प्रतिक्रिया प्राप्त होने के बाद) तो इस विधि को आमंत्रित करना सुरक्षित है। अन्य किसी अनुस्थिति के लिए आमंत्रण करने पर, open() विधि का व्यवहार निर्दिष्ट है।

send() विधि के लिए आवश्यक अनुरोध पारामीटरों को सहेजने और XMLHttpRequest ऑब्जेक्ट को पुन: उपयोग के लिए रीसेट करने के अलावा, open() विधि कोई अन्य व्यवहार नहीं करती। ध्यान दें कि जब इस विधि को आमंत्रित किया जाता है, तो कार्यान्वयन आमतौर पर वेब सेवक के लिए एक नेटवर्क कनेक्शन खोलने की कोई कोशिश नहीं करता है।

XMLHttpRequest.send()

एक HTTP अनुरोध भेजें

व्याकरण

send(body)

यदि open() के द्वारा निर्दिष्ट HTTP विधि POST या PUT है, तो body पारामीटर अनुरोध सामग्री को निर्दिष्ट करता है, एक शब्द या डॉक्युमेंट ऑब्जेक्टयदि अनुरोध सामग्री आवश्यक नहीं है, तो यह पारामीटर null होगा। किसी अन्य विधि के लिए, यह पारामीटर उपलब्ध नहीं है, यह null होना चाहिए (कुछ कार्यान्वयन इस पारामीटर को छोड़ने की अनुमति नहीं देते हैं)।

व्याख्या

यह विधि एक HTTP अनुरोध भेजता है। यदि पहले open() कॉल नहीं किया गया है, या दूसरे तौर पर, जब रीडीएस्टेट नहीं 1 है, send() एक असामान्य को फेंकेगा। अन्यथा, यह एक HTTP अनुरोध भेजता है जो निम्नलिखित अंगों से बना है:

  • पहले open() कॉल द्वारा निर्धारित HTTP विधि, URL और प्रमाणीकरण (यदि मौजूद है)।
  • पहले setRequestHeader() कॉल द्वारा निर्धारित अनुरोध हेडर (यदि मौजूद है)।
  • इस विधि को दिए गए बॉडी पारामीटर

जब अनुरोध जारी किया जाए, send() रीडीएस्टेट को 2 सेट करेगा और onreadystatechange इवेंट हैंडलर को ट्रिगर करेगा।

यदि पहले कॉल किए गए open() पारामीटर async फॉल्स नहीं, तो यह विधि अवरोधित होगी और तुरंत वापस नहीं आएगी, जब तक readyState 4 नहीं हो और सर्वर की प्रतिक्रिया पूरी तरह से प्राप्त नहीं हो जाए। अन्यथा, यदि async पारामीटर त्रू है, या इस पारामीटर को छोड़ दिया गया है, send() तुरंत वापस आएगा, और जैसा कि बाद में बताया जाएगा, सर्वर की प्रतिक्रिया बैकग्राउंड थ्रेड में संसाधित होगी।

यदि सर्वर की प्रतिक्रिया एक HTTP रीडायरेक्ट है, send() विधि या बैकग्राउंड थ्रेड स्वचालित रूप से रीडायरेक्ट का पालन करेगा। जब सभी HTTP प्रतिक्रिया हेडर प्राप्त हो जाएं, send() या बैकग्राउंड थ्रेड रीडीएस्टेट को 3 सेट करेगा और onreadystatechange इवेंट हैंडलर को ट्रिगर करेगा। यदि प्रतिक्रिया लंबी है, send() या बैकग्राउंड थ्रेड स्टेट 3 में onreadystatechange इवेंट हैंडलर को ट्रिगर कर सकते हैं: यह डाउनलोड प्रगति संकेतक के रूप में काम कर सकता है। अंत में, जब प्रतिक्रिया पूर्ण हो जाए, send() या बैकग्राउंड थ्रेड रीडीएस्टेट को 4 सेट करेगा और अंतिम बार इवेंट हैंडलर को ट्रिगर करेगा।

XMLHttpRequest.setRequestHeader()

व्याकरण

setRequestHeader(name, value)

name पारामीटर निर्धारित हेडर का नाम है। इस पारामीटर में जानकारी, डबल कोज, या लिनेंद्रिय को शामिल नहीं होना चाहिए।

value पारामीटर हेडर का मान है। इस पारामीटर में लिनेंद्रिय को शामिल नहीं होना चाहिए।

व्याख्या

setRequestHeader() विधि एक HTTP अनुरोध हेडर को निर्दिष्ट करती है, जो बाद में send() कॉल द्वारा जारी किए गए अनुरोध में शामिल होना चाहिए। इस विधि केवल जब readyState 1 हो तभी आदेश दिया जा सकता है, जैसे open() कॉल के बाद, send() कॉल से पहले।

यदि नाम वाले हेडर को पहले से ही निर्दिष्ट किया गया है, तो इस हेडर का नया मान यह होगा: पहले का मान, उसके बाद कमा, जानकारी और इस कॉल द्वारा निर्दिष्ट मान को जोड़ा गया है।

अगर open() कॉल में प्रमाणीकरण योग्यता निर्दिष्ट की गई है, XMLHttpRequest अपने आप एक उचित Authorization अनुरोध शीर्षक भेजता है। लेकिन, आप setRequestHeader() का उपयोग करके इस शीर्षक को जोड़ सकते हैं। इसी प्रकार, अगर Web सर्वर पहले से ही open() को दिए गए URL के साथ संबंधित cookie को सहेजा है, उचित Cookie या Cookie2 शीर्षक भी स्वचालित रूप से अनुरोध में शामिल किए जाते हैं। इन cookie को शीर्षक में जोड़ने के लिए setRequestHeader() कॉल कर सकते हैं। XMLHttpRequest यूज़र-एजेंट शीर्षक के लिए एक डिफ़ॉल्ट मूल्य भी प्रदान कर सकता है। अगर वह ऐसा करता है, तो आपके द्वारा इस शीर्षक के लिए निर्दिष्ट किया गया कोई भी मूल्य डिफ़ॉल्ट मूल्य के बाद जोड़ा जाएगा।

कुछ अनुरोध शीर्षक XMLHttpRequest द्वारा स्वचालित रूप से सेट किए जाते हैं, नहीं कि इस विधि द्वारा सेट किए जाते हैं, ताकि HTTP प्रोटोकॉल के अनुसार हो।इसमें एजेंट से संबंधित शीर्षक शामिल हैं:

  • Host
  • Connection
  • Keep-Alive
  • Accept-charset
  • Accept-Encoding
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • Range