XMLHttpRequest ఆబ్జెక్ట్
- ముందసి పేజీ DOM క్లోన్ నోడ్
- తదుపరి పేజీ DOM మాన్యువల్ సింథెసిస్
XMLHttpRequest ఆబ్జెక్ట్ ప్యాజ్ లోడ్ అయిన తర్వాత సర్వర్తో సంప్రదించడానికి పద్ధతులను అందిస్తుంది。
ఏమి అని XMLHttpRequest ఆబ్జెక్ట్?
XMLHttpRequest ఆబ్జెక్ట్ ఉందిడెవలపర్స్ యొక్క కలలుఎందుకంటే మీరు చేయగలరు:
- పేజే మళ్ళించకుండా పేజే ని నవీకరించడం
- పేజే లోడ్ అయిన తర్వాత సర్వర్ నుండి డాటా ప్రాచుర్యం చేయడం
- పేజే లోడ్ అయిన తర్వాత సర్వర్ నుండి డాటా పొందడం
- బ్యాక్గ్రౌండ్ లో సర్వర్కు డాటా పంపడం
అన్ని ఆధునిక బ్రౌజర్లు XMLHttpRequest ఆబ్జెక్ట్ ను మద్దతిస్తాయి.
ఉదాహరణ:టెక్స్ట్ తాకినప్పుడు సర్వర్తో XML HTTP కమ్యూనికేషన్ చేయండి.
సృష్టించండి XMLHttpRequest ఆబ్జెక్ట్
ఒక సాధారణ జావాస్క్రిప్ట్ కోడ్ ఒకటి ద్వారా, XMLHttpRequest ఆబ్జెక్ట్ సృష్టించవచ్చు.
అన్ని ఆధునిక బ్రౌజర్లలో (ఇఇ 7 సహా):
xmlhttp=new XMLHttpRequest()
ఇంటర్నెట్ ఎక్స్ప్లోరర్ 5 మరియు 6 లో:
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
ఉదాహరణ
<script type="text/javascript"> var xmlhttp; function loadXMLDoc(url) { xmlhttp=null; ఇఫ్ (విండో.ఎక్సిఎస్స్ ఏక్సిఎస్స్ట్రింగ్రీక్వెస్ట్()) {// అన్ని కొత్త బ్రౌజర్ల కోడ్} xmlhttp=new XMLHttpRequest(); } అలాగే ఇఫ్ (విండో.ఏక్టివ్కోస్ ఏక్టివ్ఒబ్జెక్ట్) {// IE5 మరియు IE6 కోడ్} xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlhttp!=null) { xmlhttp.onreadystatechange=state_Change; xmlhttp.open("GET",url,true); xmlhttp.send(null); } అలాగే { alert("మీ బ్రౌజర్ XMLHTTP ను మద్దతు చేయలేదు."); } } function state_Change() { if (xmlhttp.readyState==4) {// 4 = "loaded"} if (xmlhttp.status==200) {// 200 = OK} // ...మా కోడ్ ఇక్కడ... } అలాగే { alert("ఎక్స్ఎమ్ఎల్ డాటా పొందడంలో సమస్య"); } } } </script>
కామెంట్స్:onreadystatechange ఒక ఇవెంట్ హాండ్లర్ ఉంది. దాని విలువ (state_Change) ఒక ఫంక్షన్ పేరు, XMLHttpRequest ఆబ్జెక్ట్ స్టేట్ మార్చబడినప్పుడు ఈ ఫంక్షన్ ప్రారంభించబడుతుంది. స్టేట్ 0 (uninitialized) నుండి 4 (complete) వరకు మారుతుంది. మాత్రమే స్టేట్ 4 వద్ద మేము కోడ్ నిర్వహిస్తాము.
అసింక్రోనస్ అనేది ఎందుకు ఉపయోగిస్తారు?
మా ఉదాహరణ లో open() మూడవ పారామితిలో "true" ఉపయోగించబడింది.
ఈ పారామితి అభ్యర్థనను ఆసింక్రోనస్ లేదా సింక్రోనస్ లో ప్రాసెస్ చేయాలో నిర్ణయిస్తుంది.
ట్రూ అనేది సెండ్() మార్గంలో స్క్రిప్ట్ కొనసాగుతుంది మరియు సర్వర్ నుండి స్పందనను వేచి ఉండకూడదు అని అర్థం.
onreadystatechange ఇవ్వబడిన సంఘటన అవ్యవస్థితంగా కోడ్ను కూడా కూడిన కారణంగా అదనపు సమస్యలు రావచ్చు. కానీ సర్వర్ నుండి స్పందన పొందలేకపోయినపుడు కోడ్ను అడుగుపెట్టకూడదు అని చూసే అత్యంత సురక్షితమైన మార్గం ఇది.
ఈ పారామితిని "false" గా సెట్ చేసినపుడు, అదనపు onreadystatechange కోడ్ను తప్పించవచ్చు. అభ్యర్థన విఫలమైనపుడు ఇతర కోడ్లను అమలు చేయాలా లేకపోయినట్లయితే, ఈ పారామితిని ఉపయోగించవచ్చు.
మరిన్ని ఉదాహరణలు
XML HTTP ద్వారా ఒక టెక్స్ట్ఫైల్ ను ఒక డివ్ ఎలిమెంట్ లోకి లోడ్ చేయండి
XML HTTP ద్వారా HEAD అభ్యర్థనను నిర్వహించండి
XML / ASP
మీరు కూడా XML డాక్యుమెంట్ ప్రాప్యంచి సర్వర్లోని ASP పేజీకి పంపవచ్చు, ఈ అభ్యర్థనను విశ్లేషించి ఫలితాన్ని పంపించవచ్చు.
<html> <body> <script type="text/javascript"> క్సిఎంహెచ్టిపి=నలుస్తుంది; ఇఫ్ (విండో.ఎక్సిఎస్స్ ఏక్సిఎస్స్ట్రింగ్రీక్వెస్ట్()) // ఐఇ7, ఫైర్ఫాక్స్, ఓపెరా మొదలైనవి కోడ్ నిర్వహించడం క్సిఎంహెచ్టిపి=న్యూ ఏక్సిఎస్స్ట్రింగ్రీక్వెస్ట్(); } అలాగే ఇఫ్ (విండో.ఏక్టివ్కోస్ ఏక్టివ్ఒబ్జెక్ట్) // ఐఇ6, ఐఇ5 కోడ్ నిర్వహించడం క్సిఎంహెచ్టిపి=న్యూ ఏక్టివ్కోస్ట్రింగ్("Microsoft.XMLHTTP"); } ఇఫ్ (క్సిఎంహెచ్టిపి!=నలుస్తుంది) { క్సిఎంహెచ్టిపి.ఓపెన్("GET", "note.xml", false); క్సిఎంహెచ్టిపి.సెండ్(null); క్సిఎండాక్యూమెంట్=క్సిఎంహెచ్టిపి.రోస్పాన్స్; క్సిఎంహెచ్టిపి.ఓపెన్("POST", "demo_dom_http.asp", false); క్సిఎంహెచ్టిపి.సెండ్(క్సిఎండాక్యూమెంట్); డాక్యుమెంట్.వ్రాయ్(క్సిఎంహెచ్టిపిరోస్పాన్స్); } అలాగే { alert("మీ బ్రౌజర్ XMLHTTP ను మద్దతు చేయలేదు."); } </script> </body> </html>
ASP పేజీ, VBScript ద్వారా రాయబడింది:
<% set xmldoc = Server.CreateObject("Microsoft.XMLDOM") xmldoc.async=false xmldoc.load(request) for each x in xmldoc.documentElement.childNodes if x.NodeName = "to" then name=x.text next response.write(name) %>
response.write అంశాన్ని ఉపయోగించి ఫలితాన్ని క్లయింట్ కు పంపండి.
XMLHttpRequest ఆబ్జెక్ట్ W3C ప్రమాణం కాదా?
ఏ వ్యవస్థాపకత్వం విధానంలోనూ XMLHttpRequest ఆబ్జెక్ట్ నిర్దేశించబడలేదు.
అయితే, W3C DOM Level 3 "లోడ్ అండ్ సేవ్" నిబంధనలు కొన్ని సమానమైన ఫంక్షనలిటీలను కలిగి ఉన్నాయి, కానీ ఏ బ్రౌజర్ కూడా వాటిని అమలు చేయలేదు.
- ముందసి పేజీ DOM క్లోన్ నోడ్
- తదుపరి పేజీ DOM మాన్యువల్ సింథెసిస్