അജാക്സ് (കംപ്യൂട്ടർ പ്രോഗ്രാമിങ്ങ്)

അജാക്സ് *( AJAX )* **അസിൻക്രണസ് ജാവാസ്ക്രിപ്റ്റ് ആൻഡ് എക്സ്എംഎൽ** *( Asynchronous JavaScript and XML )* എന്നതിന്റെ ചുരുക്കമാണ്. വെബ് ആപ്ലിക്കേഷനുകളിൽ ഉപയോഗിക്കുന്ന ഒരു സാങ്കേതികവിദ്യയാണിത്. അസിൻക്രണസ് വെബ് ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കുന്നതിന് ക്ലയന്റ് ഭാഗത്തുള്ള നിരവധി വെബ് സാങ്കേതികവിദ്യകൾ ഉപയോഗിക്കുന്ന വെബ് ഡെവലപ്മെൻറ് ടെക്നിക്കുകളുടെ ഒരു കൂട്ടമാണ്. അജാക്സ് ഉപയോഗിച്ച്, നിലവിലുള്ള പേജിന്റെ പ്രദർശനത്തിലും പെരുമാറ്റത്തിലും ഇടപെടാതെ വെബ് അപ്ലിക്കേഷനുകൾക്ക് ഒരു സെർവറിൽ നിന്ന് അസമന്വിതമായി (പശ്ചാത്തലത്തിൽ) ഡാറ്റ അയയ്ക്കാനും വീണ്ടെടുക്കാനും കഴിയും. പ്രസന്റേഷൻ ലെയറിൽ നിന്ന് ഡാറ്റാ ഇന്റർചേഞ്ച് ലെയർ വിച്ഛേദിക്കുന്നതിലൂടെ, മുഴുവൻ പേജും വീണ്ടും ലോഡുചെയ്യാതെ തന്നെ ചലനാത്മകമായി ഉള്ളടക്കം മാറ്റാൻ വെബ് പേജുകളെയും വിപുലീകരണത്തിലൂടെ വെബ് ആപ്ലിക്കേഷനുകളെയും അജാക്സ് അനുവദിക്കുന്നു. പ്രായോഗികമായി, ആധുനിക നടപ്പാക്കലുകൾ സാധാരണയായി എക്സ്എം‌എല്ലിന് പകരം ജെസൺ(JSON) ഉപയോഗിക്കുന്നു.

അജാക്സ് ഒരൊറ്റ സാങ്കേതികവിദ്യയല്ല, മറിച്ച് ഒരു കൂട്ടം സാങ്കേതികവിദ്യകളാണ്. മാർക്ക്അപ്പിനും സ്റ്റൈൽ ഇൻഫോർമേഷനും എച്ചടിഎംഎൽ(HTML), സിഎസ്എസ്(CSS) എന്നിവ സംയോജിതമായി ഉപയോഗിക്കാം. ചലനാത്മകമായി പ്രദർശിപ്പിക്കുന്നതിന് വെബ്‌പേജ് ജാവാസ്ക്രിപ്റ്റിന് പരിഷ്‌ക്കരിക്കാനാകും - ഒപ്പം പുതിയ വിവരങ്ങളുമായി സംവദിക്കാൻ ഉപയോക്താവിനെ അനുവദിക്കുകയും ചെയ്യുന്നു. സ്വതവേയുള്ള XMLHttpRequest ഒബ്‌ജക്റ്റ്, അല്ലെങ്കിൽ 2017 മുതൽ ജാവാസ്ക്രിപ്റ്റിനുള്ളിലെ പുതിയ ഫെച്ച് ഫങ്ഷൻ, വെബ്‌പേജുകളിൽ അജാക്സ് എക്സിക്യൂട്ട് ചെയ്യുന്നതിന് സാധാരണയായി ഉപയോഗിക്കുന്നു, പേജ് പുതുക്കാതെ തന്നെ സ്‌ക്രീനിൽ ഉള്ളടക്കം ലോഡുചെയ്യാൻ വെബ്‌സൈറ്റുകളെ അനുവദിക്കുന്നു. അജാക്സ് ഒരു പുതിയ സാങ്കേതികവിദ്യയോ മറ്റൊരു ഭാഷയോ അല്ല, പുതിയ രീതികളിൽ ഉപയോഗിക്കുന്ന നിലവിലുള്ള സാങ്കേതികവിദ്യകളുല്ല. അജാക്സ് സ്വയം ഒരു സാങ്കേതികവിദ്യ അല്ല എന്നു പറയാം, നിലവിലുള്ള പല സാങ്കേതികവിദ്യകൾ കൂട്ടിയോജിപ്പിച്ച് ഉപയോഗിക്കുന്ന ഒരു പുതിയ രീതിയാണ് ഇത്. പ്രധാനമായും വെബ് ബ്രൌസർ വെട്ടാതെ (ഫ്ലിക്കർ ചെയ്യാതെ) തന്നെ ബ്രൌസറിൽ ഉള്ള വിവരങ്ങൾ നവീകരിക്കാൻ (അപ്ഡേറ്റ് ചെയ്യാൻ) ഒരു പിൻ‌വാതിൽ (കാൾബാക്ക്) നൽകുക ആണ് അജാക്സ് എന്ന സാങ്കേതിക വിദ്യ ചെയ്യുന്നത്. ഈ പിൻ‌വാതിൽ ഉപയോഗിച്ച് ഏകദേശം വിവരങ്ങൾ ബ്രൌസറിലേക്ക് തള്ളിവിടുന്ന (പുഷ്) പ്രതീതി ഉണ്ടാക്കാൻ കഴിയും. 
## ചരിത്രം
1990 കളുടെ ആരംഭം മുതൽ പകുതി വരെ മിക്ക വെബ്‌സൈറ്റുകളും പൂർണ്ണമായി എച്ച്ടിഎംഎൽ(HTML) പേജുകളെ അടിസ്ഥാനമാക്കിയുള്ളവയായിരുന്നു. ഓരോ ഉപയോക്തൃ പ്രവർത്തനത്തിനും സെർവറിൽ നിന്ന് ഒരു പുതിയ പേജ് ലോഡുചെയ്യേണ്ടതുണ്ട്. ഉപയോക്തൃ അനുഭവം മെച്ചപ്പെടുത്തുന്നതിന് ഈ പ്രക്രിയ കാര്യക്ഷമമല്ല: മാത്രമല്ല എല്ലാ പേജ് ഉള്ളടക്കവും അപ്രത്യക്ഷമായി, അതേ തുടർന്ന് പുതിയ പേജ് പ്രത്യക്ഷപ്പെടുകയും ചെയ്യുന്നു. ഭാഗികമായ മാറ്റം കാരണം ഓരോ തവണയും ബ്രൗസർ ഒരു പേജ് വീണ്ടും ലോഡുചെയ്യുമ്പോൾ, ചില വിവരങ്ങൾ മാത്രം മാറിയെങ്കിലും എല്ലാ ഉള്ളടക്കവും വീണ്ടും അയയ്‌ക്കേണ്ടി വന്നു. ഇത് സെർവറിൽ അധിക ലോഡ് വരികയും ബാൻഡ്‌വിഡ്ത്ത് പ്രകടനത്തെ പരിമിതപ്പെടുത്തുകയും ചെയ്യുന്നു.
ഗൂഗിൾ മെയിൽ, ഗൂഗിൾ മാപ്പുകൾ തുടങ്ങിയവ എല്ലാം അജാക്സ് പ്രയോഗത്തിന്റെ ഉദാഹരണങ്ങൾ ആണ്. ഉദാഹരണത്തിന് പേജ് ഫ്ലിക്കർ ചെയ്യാതെ തന്നെ ഗൂഗിൾ മെയിലിൽ ഒരു പുതിയ മെയിൽ വന്നു എന്ന സന്ദേശം വരുന്നതും, ഗൂഗിൾ മെയിലിൽ ഉള്ള  ഇൻലൈൻ ചാറ്റിന്റെ പിന്നിലും അജാക്സ് ആണ് പ്രവർത്തിക്കുന്നത്. 

അജാക്സ് എന്ന സാങ്കേതിക വിദ്യ ആ‍ണ് വെബ് 2.0 എന്ന പുതിയ ഇന്റർനെറ്റ് തിരയ്ക്ക് അടിസ്ഥാനം. ഇന്ന് പല ഡെസ്ക്ടോപ്പ് ആപ്ലിക്കേഷൻസും അജാക്സും മറ്റു സാങ്കേതിക വിദ്യകളും ഉപയോഗിച്ച് ഇന്റർനെറ്റിൽ കൂടി ഒരു ബ്രൌസറിൽ ലഭ്യമാണ്. സെയിൽസ്ഫോഴ്സ്.കോം (http://www.salesforce.com) ഇതിന് ഒരു നല്ല ഉദാഹരണമാണ്. 

താരതമ്യേന കഠിനമായ ഈ സാങ്കേതിക വിദ്യ എളുപ്പമാക്കുവാൻ ഇന്ന് പല ടൂൾകിറ്റുകളും ലഭ്യമാണ്. ഡോജോ റ്റൂൾകിറ്റ് (http://dojotoolkit.org), ഗൂഗിൾ വെബ് റ്റൂൾകിറ്റ് എന്നിവ ഇതിനു ചില ഉദാഹരണങ്ങളാണ്.

താഴെ കാണുന്ന ഒന്നിലധികം സങ്കേതിക വിദ്യകളുടെ സമ്മിശ്രമായ ഉപയോഗത്തിലൂടെയാണ് അജാക്സ് ഫലത്തിൽ വരുത്തുന്നത്

* എക്സ്.എച്ച്.റ്റി.എം.എൽ *( XHTML )* അല്ലെങ്കിൽ എച്ച്.റ്റി.എം.എൽ *( HTML )*
* ജാവാസ്ക്രിപ്റ്റ് 
* കാസ്കേഡിങ്ങ് സ്റ്റൈൽ ഷീറ്റുകൾ അഥവാ സി.എസ്.എസ്
* ഡോം അഥവാ ഡോക്യുമെന്റ് ഒബ്ജക്റ്റ് മോഡൽ *( DOM or document object model )* 
* എക്സ്.എം.എൽ. *( XML )* 
* എക്സ്.എസ്.എൽ.റ്റി *( XSLT )*, 
* എക്സ്.എം.എൽ എച്ച്.റ്റി.റ്റി.പി റിക്വസ്റ്റ് ഒബ്ജക്റ്റ് *( XMLHttpRequest object )* 

എന്നിവയാണ് അവ.
## കൂടുതൽ വിവരങ്ങൾക്ക്
# ഡബ്ല്യു3സ്കൂൾസ്.കോം  : ഡബ്ല്യു3സ്കൂൾസ്.കോം എന്ന സൈറ്റിൽ അജാക്സ് പാഠങ്ങൾ
# മോസില്ല ഡെവലപ്പർ സെന്റർ : മോസില്ല ഡെവലപ്പർ സെന്റർ വെബ് സൈറ്റിൽ അജാക്സിനെപ്പറ്റി
## അവലംബം

വർഗ്ഗം:കമ്പ്യൂട്ടർ പ്രോഗ്രാമിങ്ങ്
വർഗ്ഗം:വെബ് ഡിവലപ്മെന്റ്