एजेक्स

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

 
डेटा आमतौर पर XMLHttp रिक्वेस्ट ऑब्जेक्ट का उपयोग करते हुए पुनः प्राप्त किया जाता है। नाम के बावजूद जावास्क्रिप्ट और XML का उपयोग वाक्स्तव में ज़रुरी नहीं होता है, ना ही रिक्वेस्ट (अनुरोध) के अतुल्यकालिक होने की आवश्यकता होती है।

## अवयव प्रौद्योगिकियां
DHTML और LAMP की तरह, अजाक्स अपने आप में एक तकनीक नहीं है, बल्कि तकनीकों का एक समूह है। 
 
अजाक्स निम्न के एक संयोजन को काम में लेता है:

* HTML और CSS मार्क अप करने के लिए और जानकारी की स्टाइलिंग के लिए। 
* जावास्क्रिप्ट के साथ उपलब्ध DOM प्रस्तुत जानकारी के साथ डिस्प्ले और इंटरेक्ट करता है। 
* अतुल्यकालिक रूप से ब्राउज़र और सर्वर के बीच डेटा के विनिमय की विधि, इसके द्वारा पेज को रीलोड करने से रोकना. 
 `[[XMLHttp रिक्वेस्ट]] (XHR) ऑब्जेक्ट को आमतौर पर इस्तेमाल किया जाता है, लेकिन कभी कभी इसके बजाय एक [[IFrame]] ऑब्जेक्ट या एक गतिशील रूप से जोड़ा गया <[[script]]> टैग काम में लिया जाता है।` 
 
* डेटा के लिए एक प्रतिरूप को ब्राउज़र को भेजा जाता है। सामान्य प्रतिरूप में शामिल हैं XML, पहले से फोर्मेट किया गया HTML, प्लेन पाठ्य और जावा स्क्रिप्ट ऑब्जेक्ट संकेतन (JSON)। इस डेटा को सर्वर साइड स्क्रिप्टिंग के किसी रूप के द्वारा गतिक रूप से बनाया जाता है।

## इतिहास
सामग्री की अतुल्यकालिक लोडिंग के लिए तकनीकें सन् 1990 के दशक के मध्य में आयीं। जावा भाषा के पहले संस्करण में जावा ऐपलेट की शुरुआत सन् 1995 में हुई। ये एक वेब पेज को लोड किये जाने के बाद डेटा को अतुल्यकालिक रूप से लोड करने के लिए संकलित ग्राहक पक्ष कोड की अनुमति देते हैं। 
 सन् 1996 में, इंटरनेट एक्सप्लोरर ने IFrame एलिमेंट को HTML में शामिल किया, यह भी इसे प्राप्त करने में मदद करता है।  सन् 1999 में, माइक्रोसॉफ्ट ने इंटरनेट एक्स्प्लोरर 5 में XMLHTTP XMLHTTP ActiveX नियंत्रण का निर्माण किया, जिसे अब XMLHttp रिक्वेस्ट ऑब्जेक्ट के रूप में मोज़िला, सफारी और अन्य ब्राउज़र्स का समर्थन प्राप्त है।

हालांकि, इस लक्षण को व्यापक रूप से तभी जाना जाने लगा जब इसे Gmail (2004) और Google Maps (2005) के द्वारा उपयोग में लाया गया। 
 
यह शब्द "अजाक्स" सन् 2005 में आया। जेसी जेम्स गरेट के दिमाग में शब्द "अजाक्स" तब आया जब वे नहा रहे थे, उस समय वे एक ग्राहक के लिए प्रौद्योगिकियों के प्रतिनिधित्व के लिए एक संक्षिप्त रूप की आवश्यकता महसूस कर रहे थे। 
 
5 अप्रैल 2006 वर्ल्ड वाइड वेब कंसोर्टियम (W3C) ने एक अधिकारिक वेब मानक के निर्माण के लिए ऑब्जेक्ट के लिए पहला ड्राफ्ट विवरण जारी किया।

## प्रौद्योगिकियां
शब्द *अजाक्स* वेब प्रौद्योगिकियों के क बड़े समूह का प्रतिनिधित्व करता है, जिनका उपयोग एक ऐसे वेब अनुप्रयोग के क्रियान्वयन के लिए किया जाता है, जो पृष्ठभूमि में एक सर्वर के साथ संचार करता है, इस दौरान यह पेज की वर्तमान स्थिति में कोई हस्तक्षेप नहीं करता है। 
 
जिस लेख में शब्द अजाक्स दिया गया,जेसी जेम्स गरेट ने स्पष्ट किया कि निम्नलिखित प्रौद्योगिकियों की आवश्यकता है:

* प्रेजेंटेशन के लिए XHTML और CSS 
* डेटा के गतिक डिस्प्ले और डेटा के साथ इंटरेक्शन के लिए डोक्युमेंट ऑब्जेक्ट मोडल.
* डेटा के क्रमशः विनिमय, संचालन और डिस्प्ले के लिए 
XML और XSLT.
* अतुल्यकालिक संचार के लिए XMLHttp रिक्वेस्ट ऑब्जेक्ट 
* जावास्क्रिप्ट इन प्रौद्योगिकियों को एक साथ लाता है।

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

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

क्लासिकल अजाक्स में ग्राहक पर तदर्थ जावा स्क्रिप्ट (ad hoc JavaScript) का लेखन शामिल है। एक आसान और कृडर विकल्प का उपयोग मानक जावा स्क्रिप्ट लायब्रेरीज के लिए किया जाता है, जो आंशिक रूप से पेज को अपडेट करते हैं, जैसे ASP.Net का अपडेट पैनल. उपकरण जैसे Echo2 और ZK केवल मानक जावा स्क्रिप्ट लायब्रेरीज का उपयोग करते हुए सर्वर से एक पेज के फाइन ग्रेन्ड नियंत्रण (fine grained control) को सक्षम बनता है।

## तर्काधार (Rationale)
* कई मामलों में, एक वेबसाइट पर सम्बंधित पेजों में अधिकांश सामग्री होती है जो उनके बीच सामान्य होती है। 
 
पारंपरिक तरीक़ों का उपयोग का उपयोग करते हुए, हर रिक्वेस्ट पर सामग्री को रीलोड किया जाता है। हालांकि, अजाक्स का उपयोग करते हुए, एक वेब अनुप्रयोग केवल उस सामग्री की रिक्वेस्ट करता है जिसे अपडेट किये जाने की ज़रुरत होती है, इस प्रकार से बैंडविड्थ के उपयोग और लोड के समय को बहुत अधिक कम करता है। 
 
* अतुल्यकालिक रिक्वेस्ट का उपयोग ग्राहक के वेब ब्राउज़र UI को अधिक इंटरेक्टिव होने की अनुमति देता है और यह इनपुट के लिए तुरंत प्रतिक्रिया करता है और पेजों के भागों को भी व्यक्तिगत रूप से पुनः लोड किया जा सकता है।

उपयोगकर्ता अनुप्रयोग को अधिक तेज और अधिक प्रतिक्रियाशील बनाते हैं, यहां तक कि तब भी जब अनुप्रयोग सर्वर के पक्ष पर बदला नहीं है।
 
* अजाक्स का उपयोग सर्वर से कनेक्शन को कम कर सकता है, चूंकि स्क्रिप्ट और शैली की शीट कीई रिक्वेस्ट केवल एक ही बार की जा सकती है। 
* अवस्था को एक वेबसाईट में बनाये रखा जा सकता है। जावास्क्रिप्ट चर बने रहते हैं क्योंकि मुख्य कंटेनर पेज को पुनः लोड किये जाने की ज़रुरत नहीं होती है। 
 
## कमियां
* अजाक्स इंटरफेस को विकसित करना स्थैतिक पेजों की तुलना में मुश्किल होता है। 
* क्रमागत अजाक्स रिक्वेस्ट का उपयोग करते हुए गतिक रूप से निर्मित पेज अपने आप को ब्राउज़र के हिस्ट्री इंजन के साथ स्वतः रजिस्टर नहीं करते, इसलिए ब्राउजर के "बैक" बटन को क्लिक करने से उपयोगकर्ता अजाक्स के सक्षम पेज की प्रारंभिक अवस्था पर वापस नहीं आता, लेकिन इसके बजाय उन्हें उस पूरे पर लाता है, जहां यह इससे पहले आ चुका है।

आस पास के कार्यों में अदृश्य IFrames का उपयोग शामिल है, जो ब्राउज़र की हिस्ट्री में परिवर्तन करते हैं और URL के एंकर हिस्से में परिवर्तन करते हैं (following a #) जब अजाक्स चल रहा होता है और परिवर्तनों के लिए इसका नियंत्रण करता है। 
* गतिशील वेब पेज अपडेट्स एक उपयोगकर्ता के लिए अनुप्रयोग की एक विशेष अवस्था में बुकमार्क को कठिन बनाते हैं।

इस समस्या का समाधान मौजूद हैं, जिनमें से कई इसका ट्रैक रखने के लिए URL फ्रेगमेंट आईडनटीफायर ('#' के बाद URL का हिस्सा) का उपयोग करते हैं और उपयोगकर्ता को एक दी गयी अवस्था में अनुप्रयोग पर लौटने के लिए अनुमति देते हैं। 
 
* क्योंकि अधिकांश वेब क्राउलर जावा स्क्रिप्ट कोड का संपादन नहीं करते हैं, सार्वजनिक रूप से सूची योग्य वेब अनुप्रयोग को सामग्री तक पहुँच के वैकल्पिक साधन उपलब्ध करने चाहियें. जिसे सामान्यतया अजाक्स के साथ प्राप्त किया जाता है, ताकि सर्च इंजन इसकी सूची दे सकें. 
 
* कोई भी उपयोगकर्ता जिसका ब्राउज़र जावास्क्रिप्ट या XMLHttp रिक्वेस्ट का समर्थन नहीं करता है, या साधारण रूप से इसकी कार्यशीलता अक्षम है, वह उन पेजों का ठीक प्रकार से उपयोग नहीं कर पायेगा जो अजाक्स पर निर्भर हैं। इसी तरह, उपकरण जैसे मोबाइल फोन, PDAs और स्क्रीन रीडर आवश्यक तकनीकों के लिए समर्थन प्राप्त नहीं कर सकते हैं। 
 
स्क्रीन पाठकों जो अजाक्स का उपयोग करने में सक्षम है वह गतिक रूप से उत्पन्न सामग्री को ठीक प्रकार से पढने में अक्षम हो सकता है।

उपयोगकर्ता को कार्यशील बनाने का एकमात्र तरीका है, गैर जावास्क्रिप्ट तरीके पर वापस जाना. ऐसा निश्चित लिंक बना कर किया जा सकता है, औ रूपों को ठीक प्रकार से हल किया जा सकता है और ये केवल अजाक्स पर ही निर्भर नहीं करते हैं। 
 
जावास्क्रिप्ट में इसके बाद "रिटर्न फाल्स' के साथ फॉर्म जमा करने की प्रक्रिया को गलत किया जा सकता है। 
 
* इसी प्रकार की उत्पत्ति नीति डोमेन में अजाक्स तकनीकों के उपयोग को रोकती है,हालांकि W3C के पास XMLHttp रिक्वेस्ट का एक ड्राफ्ट होता है, जो इसकी क्रियाशीलता को सक्षम बनाता है। 
 
* अन्य वेब प्रौद्योगिकियों की तरह, अजाक्स की अपनी कमजोरियां हैं जिन्हें विकास करने वालों को संबोधित करना चाहिए। 
 
अन्य वेब प्रौद्योगिकियों से परिचित विकास कर्ताओं को सुरक्षित अजाक्स अनुप्रयोगों के लेखन के लिए कोडिंग विधियाँ और नए परीक्षणों को सीखना चाहिए। 
 
* अजाक्स की पावर से युक्त इंटरफेस वेब सर्वर और उनके पिछले अंत (डेटाबेस या अन्य) के लिए उपयोगकर्ता के द्वारा उत्पन्न रिक्वेस्ट की संख्या में वृद्धि कर सकते हैं। इससे प्रतिक्रिया के समय में और / या अतिरिक्त हार्डवेयर आवश्यकताओं में वृद्धि होती है। 
* उपयोगकर्ता इंटरफेस भ्रामक हो सकता है या अस्थायी रूप से व्यवहार कर सकता है जब सामान्य वेब प्रतिरूपों का अनुसरण नहीं किया जाता है।

## इन्हें भी देखें
* अजाक्स फ्रेमवर्क 
* ASP.NET AJAX
* कोमेट (प्रोग्रामिंग)
* रिवर्स अजाक्स 
* रिच इंटरनेट अनुप्रयोग
* EMML
* XML Http Reques
* गूगल वेब टूलकिट

## नोट्स

## बाहरी कड़ियाँ

* अजाक्स: वेब अनुप्रयोग के लिए एक नया दृष्टिकोण  लेख जिसने यह शब्द दिया और जिसमें Q&amp;A. दिए गए हैं।
* 

श्रेणी:अजाक्स (प्रोग्रामिंग)
श्रेणी:क्लाउड मानक
श्रेणी:जावास्क्रिप्ट प्रोग्रामिंग भाषा
श्रेणी:वेब विकास
श्रेणी:वेब 2.0 नियोलोजिस्म
श्रेणी:अंतर-प्रक्रिया संचार
श्रेणी:प्रोग्रामिंग भाषा