एजेक्स (प्रोग्रामिंग)

अजाक्स (AJAX भी ; "एसिंक्रोनस जावास्क्रिप्ट और XML के लिए संक्षेपण) वेब डेवलपमेंट तकनीकों का एक समुच्चय है जो अतुल्यकालिक वेब एप्लिकेशन सृजन करने के लिए क्लाइंट-साइड पर विभिन्न वेब तकनीकों का उपयोग करता है। अजाक्स के साथ वेब एप्लिकेशन उपस्थित पेज के प्रदर्शन और गतिविधि में हस्तक्षेप किए बिना वेब सर्वर से अतुल्यकालिक रूप से (पार्श्व में) डेटा प्रेषण और पुनर्प्राप्त कर सकते हैं। प्रेजेंटेशन लेयर से डेटा इंटरचेंज लेयर को पृथक करके, अजाक्स सम्पूर्ण पेज को पुनः भारण करने की आवश्यकता के बिना सामग्री को सक्रियता से परिवर्तित करने के लिए वेबपेज और एक्सटेंशन द्वारा वेब एप्लिकेशन की अनुमति देता है। पद्धति में, आधुनिक कार्यान्वयन सामान्यतः एक्सएमएल के स्थान पर जावास्क्रिप्ट ऑब्जेक्ट नोटेशन का उपयोग करते हैं।

अजाक्स एक तकनीक की अपेक्षाकृत एक प्रोग्रामिंग अवधारणा है। हाइपर टेक्स्ट मार्कअप लैंग्वेज और सीएसएस के संयोजन से मार्क अप और शैलीबद्ध के लिए उपयोग किया जा सकता है। वेबपेज को गतिशील रूप से प्रदर्शित करने के लिए जावास्क्रिप्ट द्वारा संशोधित किया जा सकता है - और उपयोगकर्ता को नई संसूचना के साथ परस्पर प्रभाव करने की अनुमति देता है। अंतर्निहित XMLHttpRequest ऑब्जेक्ट का उपयोग वेबपेज पर अजाक्स को निष्पादित करने के लिए किया जाता है, जिससे पृष्ठ को रीफ्रेश किए बिना वेबसाइटों को स्क्रीन पर विषय वस्तु को भारण करने की अनुमति प्राप्त होती है। अजाक्स न कोई नई तकनीक है, और न ही कोई नई भाषा है। इसके अतिरिक्त यह उपस्थित तकनीकों का उपयोग करने का एक नया तरीका है।

इतिहास
वर्ष 1990 के दशक के प्रारंभ से मध्य तक, अधिकांश वेबसाइट संपूर्ण एचटीएमएल पेज पर आधारित थीं। प्रत्येक उपयोगकर्ता कार्यकलाप के लिए सर्वर से भारण के लिए एक पूर्ण नए पृष्ठ की आवश्यकता होती है। यह प्रक्रिया अक्षम थी, जैसा कि उपयोगकर्ता अनुभव से परिलक्षित होता है: पृष्ठ की सभी विषय सूची अदृश्य हो जाती है तथा नई पृष्ठ निर्गत होती है। प्रत्येक समय आंशिक परिवर्तन के कारण ब्राउज़र द्वारा किसी पृष्ठ को पुनः भारण करने पर, सभी विषय सूची को पुनः प्रेषित करना पड़ता था, यद्यपि केवल कुछ सूचना परिवर्तित की गई थी। इसने सर्वर पर अतिरिक्त भारण डाला और बैंडविड्थ (कंप्यूटिंग) को प्रदर्शन में सीमित कारक बना दिया।

वर्ष 1996 में, आईफ्रेम टैग को इंटरनेट एक्सप्लोरर द्वारा प्रस्तावित किया गया था; ऑब्जेक्ट तत्व के समान, यह विषय सूची को अतुल्यकालिक रूप से भारण या प्राप्त कर सकता है। वर्ष 1998 में, माइक्रोसॉफ्ट आउटलुक वेब एक्सेस दल ने एक्सएमएलएचटीटीपीरिक्वेस्ट स्क्रिप्टिंग ऑब्जेक्ट के पीछे की अवधारणा विकसित की। यह एमएसएक्सएमएल पुस्तकालय (लाइब्रेरी) के दूसरे संस्करण में एक्सएमएलएचटीटीपी के रूप में निर्गत हुआ, जो मार्च 1999 में इंटरनेट एक्सप्लोरर 5.0 के साथ भेज दिया गया।

आईई 5 में विंडोज़ एक्सएमएलएचटीटीपी एक्टिवएक्स नियंत्रण की कार्यक्षमता को तत्पश्चात फ़ायरफ़ॉक्स, सफारी (वेब ​​ब्राउज़र), ओपेरा (वेब ​​ब्राउज़र), गूगल क्रोम और अन्य ब्राउज़रों द्वारा एक्सएमएलएचटीटीपीरिक्वेस्ट जावास्क्रिप्ट ऑब्जेक्ट के रूप में परिपालित किया गया था। माइक्रोसॉफ्ट ने इंटरनेट एक्सप्लोरर 7 के रूप में मूल एक्सएमएलएचटीटीपीरिक्वेस्ट मॉडल को अपनाया। एक्टिव एक्स संस्करण अभी भी इंटरनेट एक्सप्लोरर में समर्थित है, लेकिन माइक्रोसॉफ्ट एज में नहीं। इन पार्श्व HTTP अनुरोधों और अतुल्यकालिक वेब तकनीकों की उपयोगिता तब तक अति अस्पष्ट रही जब तक कि यह आउटलुक वेब एक्सेस (2000) और ओडपोस्ट (2002)  में बृहत् परिमाण पर ऑनलाइन अनुप्रयोगों में प्रदर्शित होने लगी।

गूगल ने जीमेल (2004) और गूगल मैप्स (2005) के साथ मानक-अनुपालन, क्रॉस ब्राउज़र अजाक्स का व्यापक परिनियोजन किया। अक्टूबर 2004 में कायक.कॉम का सार्वजनिक बीटा रिलीज़ उन पहली बृहत् परिमाण की ई-कॉमर्स उपयोगों में से एक था जिसे उस समय उनके विकासकर्ताओं ने "एक्सएमएल एचटीटीपी थिंग" कहा था। इसने वेब प्रोग्राम विकासकर्ताओं के बीच अजाक्स में रुचि बढ़ाई।

अजाक्स शब्द का सार्वजनिक रूप से उपयोग 18 फरवरी 2005 को जेसी जेम्स गैरेट द्वारा गूगल पेजों पर उपयोग की जाने वाली तकनीकों के आधार पर अजाक्स: ए न्यू एप्रोच टू वेब एप्लीकेशंस नामक लेख में किया गया था।

5 अप्रैल 2006 को, वर्ल्ड वाइड वेब कंसोर्टियम (W3C) ने आधिकारिक वेब मानक बनाने के प्रयास में एक्सएमएलएचटीटीपीरिक्वेस्ट ऑब्जेक्ट के लिए पहला प्रारुप विनिर्देश विमोचित किया। एक्सएमएलएचटीटीपीरिक्वेस्ट ऑब्जेक्ट का नवीनतम प्रारुप 6 अक्टूबर 2016 को प्रकाशित किया गया था, और एक्सएमएलएचटीटीपीरिक्वेस्ट विनिर्देश अब एक जीवन स्तर है।

प्रौद्योगिकी
अजाक्स शब्द वेब प्रौद्योगिकियों के एक व्यापक समूह का प्रतिनिधित्व करने के लिए आया है जिसका उपयोग वेब एप्लिकेशन को लागू करने के लिए किया जा सकता है जो पेज की वर्तमान स्थिति में हस्तक्षेप किए बिना पृष्ठभूमि में एक सर्वर के साथ संचार करता है। अजाक्स शब्द गढ़ने वाले लेख में, जेसी जेम्स गैरेट ने समझाया कि निम्नलिखित तकनीकों को सम्मिलित किया गया है:
 * एचटीएमएल (या एक्सएचटीएमएल) और सीएसएस प्रस्तुति के लिए
 * डॉक्यूमेंटऑब्जेक्ट मॉडल (DOM) डेटा के गतिशील प्रदर्शन और सहभागिता के लिए
 * डेटा के आदान-प्रदान के लिए JSON या XML और XML परिचालन के लिए XSLT
 * अतुल्यकालिक संचार के लिए एक्सएमएलएचटीटीपीरिक्वेस्ट उद्देश्य
 * इन तकनीकों को एक साथ लाने के लिए जावास्क्रिप्ट

हालांकि तब से, अजाक्स एप्लिकेशन में उपयोग की जाने वाली तकनीकों में और अजाक्स शब्द की परिभाषा में कई विकास हुए हैं। इसलिए अब डेटा इंटरचेंज के लिए XML और डेटा के परिचालन के लिए XSLT की आवश्यकता नहीं है। जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) को प्रायः डेटा इंटरचेंज के लिए एक वैकल्पिक प्रारूप के रूप में उपयोग किया जाता है, हालांकि अन्य प्रारूप जैसे पूर्वनिर्मित HTML या प्लेन टेक्स्ट का भी उपयोग किया जा सकता है। JQuery सहित विभिन्न प्रकार की लोकप्रिय जावास्क्रिप्ट लाइब्रेरी में अजाक्स अनुरोधों को निष्पादित करने में सहायता के लिए संक्षेपण सम्मिलित हैं।

जावास्क्रिप्ट उदाहरण
जावास्क्रिप्ट में लिखित GET (एचटीटीपी) पद्धति का उपयोग करते हुए एक साधारण अजाक्स अनुरोध का एक उदाहरण।

get-AJAX-data.js:

भेजें-AJAX-data.php:

उदाहरण प्राप्त करें
प्राप्त किया गया मूल जावास्क्रिप्ट एपीआई है। Google Developers Documentation के अनुसार, Fetch पुराने एक्सएमएलएचटीटीपीरिक्वेस्ट की तुलना में वेब अनुरोध करना और प्रतिक्रियाओं को संभालना आसान बनाता है।

ES7 async/प्रतीक्षा उदाहरण
फ़ेच जावास्क्रिप्ट की प्रतिज्ञा पर निर्भर करता है। फ़ेच  अजाक्स से निम्नलिखित महत्वपूर्ण तरीकों से भिन्न हैं:


 * से पुनरावृत्त वचन एचटीटीपी 404 या 500 प्रतिक्रिया होने पर भी एचटीटीपी त्रुटि स्थिति को अस्वीकार नहीं करेगी। इसके अलावा, जैसे ही सर्वर शीर्षलेखों के साथ प्रतिक्रिया करता है, वचन सामान्य रूप से समाधान हो जाएगा (यदि प्रतिक्रिया 200–299 की सीमा में नहीं है, तो प्रतिक्रिया की ओके विशेषता बनावटी पर निर्धारित हो जाने के साथ), और यह केवल नेटवर्क विफलता पर या किसी भी चीज़ के अनुरोध को पूरा होने से प्रतिबंधित करने पर अस्वीकार कर देगी।
 * जब तक आप क्रेडेंशियल init विकल्प निर्धारित नहीं करते हैं, तब तक लाने क्रॉस-मूल कुकीज़ नहीं भेजेगा। (अप्रैल 2018 से युक्ति ने डिफ़ॉल्ट क्रेडेंशियल नीति को समान-मूल में बदल दिया। फ़ायरफ़ॉक्स 61.0b13 से बदल गया।)

यह भी देखें

 * एक्शनस्क्रिप्ट
 * कोमेट (प्रोग्रामिंग) (रिवर्स अजाक्स के रूप में भी जाना जाता है)
 * गूगल इंस्टेंट
 * एचटीटीपी/2
 * अजाक्स संरचना की सूची
 * नोड.जेएस
 * रिमोट स्क्रिप्टिंग
 * रिच वेब एप्लीकेशन
 * वेबसॉकेट
 * एचटीएमएल 5
 * वेब संरचना
 * जावास्क्रिप्ट संग्रह