AJAX Asynchronous JavaScript And XML
अजाक्स क्या है?
अजाक्स एक वेब टेक्नोलॉजी है जिसकी मदद से बिना वेब पेज को रिफ्रेश किए बिना अर्थात रीलोड किए बिना हम वेबपेज के डाटा को अपडेट कर सकते हैं। अजाक्स का फुल फॉर्म है असिंक्रोनस जावास्क्रिप्ट एंड एक्सएमएल।
अजाक्स के बारे में हम इसे ऐसे समझ सकते हैं कि मान लीजिए कि किसी वेबपेज पर एचटीएमएल कंटेंट को चेंज करना है तो उसके लिए हम किसी टेक्स्ट फाइल में लिखे हुए एचटीएमएल कंटेंट को पेज पर अपडेट कर सकते हैं। इसी तरह, अगर पेज पर किसी डेटाबेस का टेबल प्रदर्शित किया गया है तो उस डेटाबेस के टेबल को अपडेट कर हम अपडेटेड डाटा को वेब पेज पर प्रदर्शित कर सकते हैं।
अजाक्स की खूबी यह है कि डाटा को अपडेट करने के लिए पेज को रिफ्रेश करने की जरूरत नहीं होती है। यह इतना स्वाभाविक रूप से होता है की यूजर को पता ही नहीं चलता है कि बैकग्राउंड में डाटा सर्वर पर गया है अथवा सर्वर से डाटा वेब पेज पर आया है।
अजाक्स की मदद से ना केवल सर्वर से डाटा को एक वेबपेज पर भेजा जा सकता है अपितु क्लाइंट भी डाटा को सर्वर पर पोस्ट कर सकता है। जैसा कि हम जानते हैं कि सर्वर से डाटा को वेब पेज पर लाने के लिए GET एचटीटीपी क्रिया का यूज़ किया जाता है। इसी तरीके से वेबपेज से किसी डाटा को सर्वर पर भेजने के लिए POST मेथड का यूज किया जाता है। अजाक्स की मदद से इन दोनों तरह के क्रियाकलापों GET या POST को बहुत ही सरलता से किया जा सकता है, और अजाक्स की सबसे बड़ी काबिलियत यह है कि डाटा का ट्रांसफर बिल्कुल बैकग्राउंड में होता है जिसके कारण यूजर को डाटा ट्रांसफर का आभास नहीं हो पाता है।
XMLHttpRequest
अजाक्स टेक्नोलॉजी की मदद से इस क्रियाकलाप को करने के लिए एक्सएमएलएचटीटीरीक्वेस्ट नामक ऑब्जेक्ट का उपयोग किया जाता है। एक्सएमएलएचटीटीरीक्वेस्ट ब्राउज़र के भीतर इनबिल्ट अर्थात बना हुआ होता है और जब ब्राउज़र पर कोई इवेंट फायर होता है, घटना घटित होती है तो एक्सएमएलएचटीटीरीक्वेस्ट का एक ऑब्जेक्ट बनता है। इस ऑब्जेक्ट के कुछ प्रॉपर्टी और मेथड्स होते हैं। अजाक्स को समझने के लिए इन प्रॉपर्टीज और मेथड्स को समझना जरूरी है।
readyState and onreadystatechange
जैसा कि हमने कहा कि एक्सएमएलएचटीटीरीक्वेस्ट नामक ऑब्जेक्ट घटना के घटित होने पर बनता है और यह ऑब्जेक्ट एचटीटीपी रिक्वेस्ट को सर्वर को भेजता है। जब एचटीटीपी रिक्वेस्ट सर्वर के पास जाता है तो उस रिक्वेस्ट को सर्वर प्रोसेस करता है। रिक्वेस्ट को प्रोसेस करने के कई चरण होते हैं जिसे रेडीस्टेट नामक प्रॉपर्टी में दर्शाया जाता है।
रेडीस्टेट प्रॉपर्टी के पांच वैल्यू पॉसिबल होते हैं और इनके मान 0 से लेकर 4 तक हैं। प्रत्येक वैल्यू का अपना एक विशेष अर्थ होता है जैसे 0 का अर्थ होता है कि रिक्वेस्ट अभी आरंभ नहीं हुआ है जबकि 1 का मतलब है कि सर्वर के साथ क्लाइंट का कनेक्शन स्थापित हो चुका है। 2 का मतलब है कि सर्वर ने रिक्वेस्ट को प्राप्त कर लिया है और 3 का मतलब है कि सर्वर उस रिक्वेस्ट को प्रोसेस कर रहा है। और, 4 का मतलब है कि सर्वर ने रिक्वेस्ट को पूरी तरह प्रोसेस कर दिया है और वह रिस्पांस के लिए तैयार है।
जैसा कि हमने कहा कि रेडीस्टेट की अलग-अलग वैल्यू होती है तो इस रेडीस्टेट की वैल्यू चेंज होने पर इसके बारे में जानकारी के लिए एक्सएमएलएचटीटीरीक्वेस्ट ऑब्जेक्ट की एक और प्रॉपर्टी होती है जिसे ऑनरेडीस्टेटचेंज प्रॉपर्टी कहते हैं। इस प्रॉपर्टी को एक फंक्शन असाइन किया जाता है जो रेडीस्टेट प्रॉपर्टी के चेंज होने पर कॉल होता है।
जब सर्वर के द्वारा रिस्पांस दिया जाता है तो उस रिस्पांस के संबंध में दो प्रॉपर्टीज एक्सएमएलएचटीटीरीक्वेस्ट ऑब्जेक्ट में निहित है जैसे रिस्पांसटेक्स्ट और रिस्पांसएक्सएमएल। रिस्पांसटेक्स्ट के अंतर्गत रिस्पांस की फॉर्मेट स्ट्रींग होती है जबकि रेस्पॉन्सएक्सएमएल के अंतर्गत रिस्पांस की फॉरमैट एक्सएमएल डाटा के रूप में होती है। इसके अतिरिक्त एक स्टेटसटेक्स्ट नामक प्रॉपर्टी होती है जिसके द्वारा ओके या नॉट फाउंड नामक रेस्पॉन्स सर्वर द्वारा दर्शाया जाता है। जब क्लाइंट द्वारा एचटीटीपी रिक्वेस्ट भेजा जाता है तो सर्वर उस रिक्वेस्ट को प्रोसेस करने के बाद अगर उसे तत्सम्बन्धित डाटा नहीं मिलता है तो स्टेटसटैक्स के अंतर्गत नॉट फाउंड का वैल्यू भेजता है जबकि डाटा मिल जाने पर स्टेटसटेस्ट के अंतर्गत ओके की वैल्यू भेजता है।
ऊपर बताई गई इन 5 प्रॉपर्टीज की सहायता से एक्सएमएलएचटीटीरीक्वेस्ट ऑब्जेक्ट की रिक्वेस्ट और सर्वर के रिस्पांस के बारे में जानकारी मिल जाती है कि रिक्वेस्ट अभी किस प्रक्रिया से गुजर रहा है अथवा सर्वर ने रिक्वेस्ट के संबंध में क्या स्टेटस रेस्पॉन्स के रूप में भेजा है इत्यादि।
Methods such as open(), send()
हम देखेंगे कि एक्सएमएलएचटीटीपीरिक्वेस्ट ऑब्जेक्ट के ओपन होने का क्या अर्थ है।
एक्सएमएलएचटीटीपी रिक्वेस्ट ऑब्जेक्ट का एक मेथड open() होता है। ओपन मेथड के द्वारा रिक्वेस्ट की डिस्क्रिप्शन तय की जाती है जैसे किस एचटीटीपी क्रिया GET या POST का उपयोग रिक्वेस्ट के दौरान होगा।
open(method, url, asynchronous, usr, pwd) के पैरामीटर के रूप में यह सारे डिस्क्रिप्शन दिए जाते हैं। पहला पैरामीटर method होता है जिसका मान GET होगा या POST, दूसरा पैरामीटर यूआरएल को निर्धारित करता है कि सर्वर के किस फ़ाइल के लिए रिक्वेस्ट भेजा जाएगा, तीसरा पैरामीटर true या false यह निर्देश देता है की रिक्वेस्ट असिंक्रोनस होगा अथवा सिंक्रोनस। इसके अतिरिक्त दो अन्य पैरामीटर भी होते हैं यूजर और पासवर्ड यह दोनों ऑप्शनल होते हैं जबकि शुरू के 3 पैरामीटर अनिवार्य है।
अजाक्स रिक्वेस्ट के द्वारा जब किसी फाइल की रिक्वेस्ट की जाती है तो अगर वह फाइल सर्वर पर उपलब्ध होता है तो सर्वर उस फाइल को क्लाइंट को उपलब्ध करा देता है। अगर फाइल स्क्रिप्ट वाली फाइल होती है जैसे जावास्क्रिप्ट पीएचपी, एएसपी इत्यादि तो सर्वर उस फाइल को execute कर देती है।
एक्सएमएलएचटीटीपी रिक्वेस्ट ऑब्जेक्ट के open() मेथड के बाद send() मेथड आता है। इस मेथड के दो रूप overloads हैं। send () मेथड अगर बिना पैरामीटर का होता है तो इसके द्वारा GET रिक्वेस्ट को भेजा जाता है परंतु अगर POST रिक्वेस्ट को भेजना होता है तो send(string) मेथड को भेजा जाता है।
सर्वर डाटा प्रोसेसिंग के बाद डेटा को क्लाइंट को भेज देता है और ब्राउज़र जावास्क्रिप्ट की मदद से उस डाटा को वेब पेज पर अपडेट कर देता है।
लेखक अजीत कुमार
No comments:
Post a Comment