XMLHttpRequest
एक्स. एम. एल. एच. टी. टी. पी. रीक्वेस्ट (एक्स. एच. आर.) एक जावास्क्रिप्ट वर्ग है जिसमें वेब ब्राउज़र से वेब सर्वर तक एच. टी. टी. पी. अनुरोधों को अतुल्यकालिक रूप से प्रेषित करने के तरीके हैं। ये विधियाँ एक ब्राउज़र-आधारित अनुप्रयोग को एक ठीक-ठाक सर्वर कॉल करने और परिणामों को एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट की प्रतिक्रिया-पाठ विशेषता में संग्रहीत करने की अनुमति देती हैं। एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट वर्ग अजाक्स प्रोग्रामिंग का एक घटक है। अजाक्स से पहले, एक एच. टी. एम. एल. प्रपत्र को पूरी तरह से सर्वर पर भेजने के बाद एक पूर्ण ब्राउज़र पृष्ठ ताज़ा करने की आवश्यकता होती थी। एक्सएमएलएचटीटीपीआरक्वेस्ट वर्ग के पीछे की अवधारणा की कल्पना 2000 में माइक्रोसॉफ्ट आउटलुक के डेवलपर्स द्वारा की गई थी-जो विंडोज 2000 ऑपरेटिंग सिस्टम पर उपलब्ध है। इस अवधारणा को तब इंटरनेट एक्सप्लोरर 5 (2001) ब्राउज़र के इंटरप्रेटर के भीतर लागू किया गया था। हालांकि, मूल वाक्यविन्यास में एक्सएमएलएचटीटीपीआरक्वेस्ट पहचानकर्ता का उपयोग नहीं किया गया था। इसके बजाय, डेवलपर्स ने पहचानकर्ताओं एक्टिवएक्सओबजेक्ट ("Msxml2.XMLHTTP") और एक्टिवएक्सओबजेक्ट ("Microsoft.XMLHTTP") का उपयोग किया। इंटरनेट एक्सप्लोरर 7 (2006) के अनुसार, सभी ब्राउज़र एक्सएमएलएचटीटीपीआरक्वेस्ट पहचानकर्ता का समर्थन करते हैं। एक्सएमएलएचटीटीपीआरक्वेस्ट पहचानकर्ता अब सभी प्रमुख ब्राउज़रों में वास्तविक मानक है, जिसमें मोज़िला का गेको लेआउट इंजन (2002), कॉन्करर (2002), सफारी 1.2 (2004), ओपेरा 8.0 (2005) और आईकैब (2005) शामिल हैं। जेक्वेरी जैसे क्रॉस-ब्राउज़र जावास्क्रिप्ट पुस्तकालयों के आगमन के साथ, डेवलपर्स अप्रत्यक्ष रूप से एक्सएमएलएचटीटीपीआरक्वेस्ट कार्यक्षमता का आह्वान कर सकते हैं। मानक वर्ल्ड वाइड वेब कंसोर्टियम (डब्ल्यू3सी) ने 5 अप्रैल, 2006 को एक्सएमएलएचटीटीपीआरक्वेस्ट ऑब्जेक्ट के लिए एक कार्य मसौदा विनिर्देश प्रकाशित किया। 25 फरवरी, 2008 को डब्ल्यू3सी ने वर्किंग ड्राफ्ट लेवल 2 विनिर्देश प्रकाशित किया। स्तर 2 ने घटना की प्रगति की निगरानी करने, क्रॉस-साइट अनुरोधों की अनुमति देने और बाइट धाराओं को संभालने के लिए तरीके जोड़े। 2011 के अंत में, स्तर 2 विनिर्देश को मूल विनिर्देश में अवशोषित कर लिया गया था। 2012 के अंत में, डब्ल्यू. एच. ए. टी. डब्ल्यू. जी. ने विकास को संभाला और वेब आई. डी. एल. का उपयोग करके एक जीवित दस्तावेज़ का रखरखाव किया। एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट उपयोग निर्माता वेब सर्वर के लिए एक अतुल्यकालिक अनुरोध उत्पन्न करने के लिए पहले एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट ऑब्जेक्ट को तत्काल (मेमोरी आवंटित करने) की आवश्यकता होती है। आवंटित स्मृति एक चर को सौंपी जाती है। जावास्क्रिप्ट में एक नई वस्तु को तत्काल करने के लिए प्रोग्रामिंग कथन नया है। नए कथन के बाद वस्तु का निर्माणकर्ता कार्य होता है। ऑब्जेक्ट-ओरिएंटेड लैंग्वेज डेवलपर्स के लिए प्रथा वर्ग के नाम के समान नाम का उपयोग करके कंस्ट्रक्टर फ़ंक्शन का आह्वान करना है। इस मामले में, वर्ग का नाम XMLHttpRequest है। एक नए एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट को तत्काल करने के लिए और इसे अनुरोध नामक चर को निर्दिष्ट करने के लिएः वार अनुरोध = नया एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट (); खुली विधि एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट को तैयार करती है। यह पाँच मापदंडों को स्वीकार कर सकता है, लेकिन केवल पहले दो की आवश्यकता होती है। वार अनुरोध = नया एक्स. एम. एल. एच. टी. टी. पी. अनुरोध (); request.open (अनुरोध विधि, सबमिट यू. आर. एल., अतुल्यकालिक बूलियन, उपयोगकर्ता नाम, पासवर्ड); अनुरोध विधिः एच. टी. टी. पी. अनुरोध विधि डेटा की विशिष्ट मात्राओं के लिए जी. ई. टी. हो सकती है। उपलब्ध अन्य अनुरोध विधियों में, पोस्ट पर्याप्त मात्रा में डेटा को संभालेगा। रिटर्न स्ट्रिंग प्राप्त होने के बाद, XMLHttpRequest मेमोरी को मुक्त करने के लिए. ओपन () पर DELETE अनुरोध विधि भेजें। यदि डी. ई. एल. ई. टी. ई. भेजा जाता है, तो सबमीटयू. आर. एल. पैरामीटर शून्य हो सकता है। request.open ("DELETE", null); सबमीटयूआरएलः सबमीटयूआरएल एक यूआरएल है जिसमें निष्पादन फ़ाइल नाम और कोई भी पैरामीटर होता है जो वेब सर्वर को प्रस्तुत किया जाता है। यदि यू. आर. एल. में मेजबान का नाम है, तो यह वेब सर्वर होना चाहिए जिसने एच. टी. एम. एल. दस्तावेज़ भेजा हो। अजाक्स समान मूल नीति का समर्थन करता है। अतुल्यकालिक बूलियनः यदि आपूर्ति की जाती है, तो इसे सही पर सेट किया जाना चाहिए। यदि गलत पर सेट किया जाता है, तो ब्राउज़र वापसी स्ट्रिंग प्राप्त होने तक प्रतीक्षा करेगा। प्रोग्रामरों को एसिंक्रोनसबूलियन को गलत पर सेट करने के लिए हतोत्साहित किया जाता है, और ब्राउज़र एक अपवाद त्रुटि का अनुभव कर सकते हैं। उपयोगकर्ता नाम-यदि आपूर्ति की जाती है, तो यह उपयोगकर्ता को प्रमाणित करने में मदद करेगा। कूटशब्दः यदि आपूर्ति की जाती है, तो यह उपयोगकर्ता को प्रमाणित करने में मदद करेगा। यदि पी. ओ. एस. टी. की अनुरोध विधि को लागू किया जाता है, तो मीडिया प्रकार के सामग्री-प्रकारः अनुप्रयोग/एक्स-डब्ल्यू. डब्ल्यू. डब्ल्यू.-फॉर्म-यू. आर. एल. एन. कोडित भेजने का अतिरिक्त चरण आवश्यक है। सेटरीक्वेस्टहेडर विधि कार्यक्रम को इस या अन्य एच. टी. टी. पी. शीर्षकों को वेब सर्वर पर भेजने की अनुमति देती है। इसका उपयोग सेटरीक्वेस्टहेडर (हेडरफील्ड, हेडरवैल्यू) है। पी. ओ. एस. टी. अनुरोध विधि को सक्षम करने के लिएः * request.setRequestHeader ("सामग्री-प्रकार", "अनुप्रयोग/एक्स-डब्ल्यू. डब्ल्यू. डब्ल्यू.-फॉर्म-यू. आर. एन. कोडित"); भेजने की विधि यदि पी. ओ. एस. टी. की अनुरोध विधि को लागू किया जाता है, तो वेब सर्वर मानक इनपुट धारा से प्रपत्र डेटा को पढ़ने की उम्मीद करता है। वेब सर्वर को फॉर्म डेटा भेजने के लिए, request.send (फॉर्मडेटा) निष्पादित करें, जहां फॉर्मडेटा एक पाठ स्ट्रिंग है। यदि जी. ई. टी. की अनुरोध विधि को लागू किया जाता है, तो वेब सर्वर केवल डिफ़ॉल्ट शीर्षकों की अपेक्षा करता है। डिफ़ॉल्ट शीर्षक भेजने के लिए, request.send (शून्य) निष्पादित करें। ऑनरेडीस्टेटचेंज कार्यक्रम श्रोता ऑनरेडीस्टेटचेंज एक कॉलबैक विधि है जिसे समय-समय पर अजाक्स जीवनचक्र में निष्पादित किया जाता है। रेडीस्टेटमेथोड () नामक कॉलबैक विधि निर्धारित करने के लिए, वाक्यविन्यास request.onreadystatechange = रेडीस्टेटमेथोड है। सुविधा के लिए, वाक्यविन्यास एक अनाम विधि को परिभाषित करने की अनुमति देता है। एक अनाम कॉलबैक विधि को परिभाषित करने के लिएः वार अनुरोध = नया एक्स. एम. एल. एच. टी. टी. पी. अनुरोध (); request.onreadystatechange = कार्य () {// कोड हटा दिया गया} एक्स. एम. एल. एच. टी. टी. पी. अनुरोध जीवनचक्र कई चरणों से गुजरता है-0 से 4 तक। चरण 0 ओपन () विधि को लागू करने से पहले है, और चरण 4 तब होता है जब पाठ स्ट्रिंग आ जाती है। जीवनचक्र की निगरानी के लिए, एक्स. एम. एल. एच. टी. टी. पी. रीक्वेस्ट में रेडीस्टेट विशेषता उपलब्ध है। चरण 1-3 अस्पष्ट हैं और व्याख्याएँ ब्राउज़रों में भिन्न होती हैं। फिर भी, एक व्याख्या हैः चरण 0: प्रारंभिक चरण 1: लोडिंग चरण 2: लोडेड चरण 3: इंटरएक्टिव चरण 4: पूरा जब रेडीस्टेट 4 तक पहुंच जाता है, तो पाठ स्ट्रिंग आ जाती है और प्रतिक्रिया पाठ विशेषता में सेट हो जाती है। वार अनुरोध = नया एक्सएमएलएचटीटीपीआरक्वेस्ट (); request.onreadystatechange = फ़ंक्शन () {यदि (request.readyState = = 4) {// request.responseText सेट है} लिनक्स उदाहरण अनुरोध पर, ब्राउज़र एक कंप्यूटर प्रोग्राम को निष्पादित करने के लिए वेब सर्वर के लिए अनुरोध प्रसारित करने के लिए एक जावास्क्रिप्ट फ़ंक्शन निष्पादित करेगा। कंप्यूटर प्रोग्राम पी. एच. पी. दुभाषिया, एक अन्य दुभाषिया, या एक संकलित निष्पादन योग्य हो सकता है। किसी भी मामले में, जावास्क्रिप्ट फ़ंक्शन एक पाठ स्ट्रिंग को वापस प्रेषित करने और प्रतिक्रिया पाठ विशेषता में संग्रहीत करने की उम्मीद करता है। जावास्क्रिप्ट फंकशनक एकटा उदाहरण बनाबय लेलः cd/var/www/एच. टी. एम. एल. ajax_submit.js नामक एकटा फाइलकेँ संपादित करूः फंक्शन ajax _ submit (एलिमेंट _ आईडी, जमा _ यू. आर. एल.) {var अनुरोध = नया एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट (); वार कम्प्लीट _ स्टेट = 4; request.onreadystatechange = फंक्शन () {यदि (request.readyState = = कम्प्लीट _ स्टेट) {दस्तावेज़। GetElementById (एलिमेंट _ आईडी)। इनरएच. टी. एम. एल. = request.responseText; request.open ("डी. ई. एल. ई. टी. ई"., नल);}} request.open ("जी. ई. टी"., सबमिट _ यू. आर. एल.); request.send (नल);} पी. एच. पी. उदाहरण पी. एच. पी. एक स्क्रिप्टिंग भाषा है जिसे विशेष रूप से एच. टी. एम. एल. के साथ इंटरफेस करने के लिए डिज़ाइन किया गया है। क्योंकि पी. एच. पी. इंजन एक दुभाषिया है-प्रोग्राम के बयानों की व्याख्या करते हुए जैसे वे पढ़े जाते हैं-प्रोग्रामिंग की सीमाएँ और प्रदर्शन लागतें होती हैं। फिर भी, इसकी सरलता फ़ाइलों के एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट सेट को एक ही कार्यशील निर्देशिका-शायद/वार/डब्ल्यू. डब्ल्यू./एच. टी. एम. एल. में रख सकती है। पी. एच. पी. सर्वर घटक पी. एच. पी. एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट का सर्वर घटक सर्वर पर स्थित एक फ़ाइल है जो ब्राउज़र में प्रेषित नहीं होती है। इसके बजाय, पी. एच. पी. दुभाषिया इस फाइल को खोलेगा और इसके पी. एच. पी. निर्देशों को पढ़ेगा। एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट प्रोटोकॉल के लिए इसे एक पाठ स्ट्रिंग आउटपुट करने की आवश्यकता होती है। सी. डी./वार/डब्ल्यू. डब्ल्यू./एच. टी. एम. एल. ajax.phtml: <? पी. एच. पी. इको '<एच. 1> हैलो वर्ल्ड! </एच. 1>';? पी. एच. पी. ब्राउज़र घटक पी. एच. पी. एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट का ब्राउज़र घटक सर्वर पर स्थित एक फ़ाइल है जो ब्राउज़र में प्रेषित हो जाती है। ब्राउज़र इस फ़ाइल को खोलेगा और इसके एच. टी. एम. एल. निर्देशों को पढ़ेगा। सी. डी./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए. आर./ए सी. जी. आई. सर्वर घटक सी. जी. आई. एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट का सर्वर घटक सर्वर पर स्थित एक निष्पादन योग्य फ़ाइल है। ऑपरेटिंग सिस्टम इस फाइल को खोलेगा और मशीन के निर्देशों को पढ़ेगा। एक्स. एम. एल. एच. टी. टी. पी. आरक्वेस्ट प्रोटोकॉल को एक पाठ स्ट्रिंग आउटपुट करने के लिए निष्पादन योग्य की आवश्यकता होती है। संकलित कार्यक्रमों में दो फाइलें होती हैंः स्रोत कोड और एक संबंधित निष्पादन योग्य। सी. डी./यू. एस. आर./लिब/सी. जी. आई.-बिन ajax.c: #include <stdio.h> शून्य मुख्य (शून्य) नामक फाइल संपादित करें। सी. जी. आई. को आउटपुट के लिए पहली पंक्ति की आवश्यकता होती हैः */प्रिंट. एफ. ("सामग्री-प्रकारः पाठ/एच. टी. एम. एल. \न");/* सी. जी. आई. को आउटपुट के लिए दूसरी पंक्ति की आवश्यकता होती हैः */प्रिंट. एफ. ("\न"); प्रिंट. एफ. ("<एच1> हैलो वर्ल्ड! </एच1> \न"); निष्पादन योग्य बनाने के लिए स्रोत कोड संकलित करें। वेब सर्वर को एक निष्पादन योग्य को निष्पादित करने के लिए कहने के लिए वाक्यविन्यास/सी. जी. आई.-बिन/है जिसके बाद फ़ाइल का नाम है। सुरक्षा के लिए, निष्पादन योग्य को एक क्रूट जेल में रहना चाहिए। इस मामले में, जेल निर्देशिका/usr/lib/cgi-bin/है। सी. डी./ए. आर./डब्ल्यू. डब्ल्यू. डब्ल्यू./एच. टी. एम. एल. नामक फाइल संपादित करें ajax.html: <एच. टी. एम. एल.> <हेड> <शीर्षक> हैलो वर्ल्ड </शीर्षक> <स्क्रिप्ट प्रकार = पाठ/जावास्क्रिप्ट एस. आर. सी. = ajax_submit.js </स्क्रिप्ट> </हेड> <बॉडी> <डिव आई. डी. = अजाक्स _ टाइटल> </डिव> <बटन ऑनक्लिक = "अजाक्स _ सबमिट ('अजाक्स _ टाइटल', '/सी. जी. आई.-बिन/अजाक्स')"> अपने ब्राउज़र को एच. टी. पी.:// लोकलहोस्ट/</बॉडी.