XML DOM - XMLHttpRequest ఆబ్జెక్ట్

XMLHttpRequest ఆబ్జెక్ట్

XMLHttpRequest ఆబ్జెక్ట్ హెచ్చి ప్రొటోకాల్ పూర్తి ప్రాప్తిని అందిస్తుంది, POST మరియు HEAD రిక్వెస్ట్లను చేయడం మరియు సాధారణ GET రిక్వెస్టులను చేయడం సాధ్యము. XMLHttpRequest వెబ్ సర్వర్ స్పందనను సింక్రోనస్ లేదా అసింక్రోనస్ గా అందిస్తుంది మరియు టెక్స్ట్ లేదా ఒక DOM డాక్యుమెంట్ రూపంలో కంటెంట్ను అందిస్తుంది.

అయితే XMLHttpRequest అనే పేరు ఉన్నప్పటికీ, ఇది XML డాక్యుమెంట్స్ తో మాత్రమే ఉపయోగించబడదు: ఇది ఏ రీతినా టెక్స్ట్ డాక్యుమెంట్ను ప్రాప్తించగలదు.

XMLHttpRequest ఆబ్జెక్ట్ పేరు అనేది AJAX వెబ్ అప్లికేషన్ ఆర్కిటెక్చర్ యొక్క కీలక ఫంక్షన్ ఒకటి.

బ్రౌజర్ మద్దతు

XMLHttpRequest అనేది అన్ని ఆధునిక బ్రౌజర్లకు మంచి మద్దతు అందిస్తుంది. ఏకైక బ్రౌజర్ ఆధారితత అనేది XMLHttpRequest ఆబ్జెక్ట్ సృష్టికి సంబంధించినది. IE 5 మరియు IE 6 లో, IE ప్రత్యేకమైన ActiveXObject() కన్స్ట్రక్టర్ ఉపయోగించాలి. కారణం కాకుండా, XMLHttpRequest ఆబ్జెక్ట్ 这一节所介绍的。

W3C 标准化

XMLHttpRequest 对象还没有标准化,但是 W3C 已经开始了标准化的工作,本手册介绍的内容都是基于标准化的工作草案。

当前的 XMLHttpRequest 实现已经相当一致。但是和标准有细微的不同。例如,一个实现可能返回 null,而标准要求是空字符串,或者实现可能把 readyState 设置为 3 而不保证所有的响应头部都可用。

అనునామా

readyState

HTTP అభ్యర్థన స్థితి. ఒక XMLHttpRequest ప్రారంభం అయితే, ఈ అనునామా విలువ నుండి 0 పెరుగుతుంది మరియు పూర్తి HTTP స్పందన అందుబాటులోకి వచ్చినప్పుడు వరకు 4 వరకు పెరుగుతుంది.

ప్రతి స్థితికి ఒక అనౌపచారిక పేరు ఉంది. ఈ పట్టిక స్థితి, పేరు మరియు అర్థాన్ని ప్రస్తావిస్తుంది:

స్థితి పేరు వివరణ
0 Uninitialized ప్రారంభ స్థితి. XMLHttpRequest ఆబ్జెక్ట్ సృష్టించబడింది లేదా abort() పద్ధతిని ద్వారా పునఃస్థాపించబడింది.
1 Open open() పద్ధతి అనుమతించబడింది, send() పద్ధతి అనుమతించబడలేదు. అభ్యర్థన పంపబడలేదు.
2 Sent Send() పద్ధతి అనుమతించబడింది, HTTP అభ్యర్థన వెబ్ సర్వర్కుకు పంపబడింది. స్పందన అందుబాటులోకి వచ్చింది లేదు.
3 Receiving అన్ని స్పందన హెడర్లు అందుబాటులోకి వచ్చాయి. స్పందన శరీరం ప్రారంభమైంది కాని పూర్తి కాలేదు.
4 Loaded HTTP స్పందన పూర్తిగా అందుబాటులోకి వచ్చింది.

రెడీస్టేట్ విలువ తగ్గదు, విధివిధానంలో abort() లేదా open() పద్ధతిని అనుమతించినప్పుడు మాత్రమే. ఈ అనునామా విలువ పెరిగినప్పుడు, onreadystatechange ఇవెంట్ హాండిలర్ తొందరగా ప్రారంభించబడుతుంది.

responseText

ఇప్పటికే సర్వర్కు అందుబాటులోకి వచ్చిన స్పందన శరీరం (హెడర్లను చేర్చకుండా), లేకపోతే ఖాళీ పదబంధం.

రెడీస్టేట్ మినిస్టర్ 3 కంటే తక్కువ ఉన్నట్లయితే, ఈ అనునామా ఒక ఖాళీ పదబంధం. రెడీస్టేట్ 3 అయితే, ఈ అనునామా ఇప్పటికే అందుబాటులోకి వచ్చిన స్పందన భాగాన్ని తిరిగి ఇస్తుంది. రెడీస్టేట్ 4 అయితే, ఈ అనునామా పూర్తి స్పందన శరీరాన్ని సేవ్ చేస్తుంది.

స్పందనలో స్పందన శరీరానికి నిర్దేశించిన అక్షర కోడింగ్ హెడర్ ఉన్నట్లయితే, ఆ కోడింగ్ ని వాడతారు. లేకపోతే, యూనికోడ్ UTF-8 ని అనుమానిస్తారు.

responseXML

అభ్యర్థనకు స్పందనను పరిశీలించడం, XML గా మార్చి వినియోగించబడుతుంది డాక్యుమెంట్ ఆబ్జెక్ట్返回。

status

由服务器返回的 HTTP 状态代码,如 200 表示成功,而 404 表示 "Not Found" 错误。当 readyState 小于 3 的时候读取这一属性会导致一个异常。

statusText

这个属性用名称而不是数字指定了请求的 HTTP 的状态代码。也就是说,当状态为 200 的时候它是 "OK",当状态为 404 的时候它是 "Not Found"。和 status 属性一样,当 readyState 小于 3 的时候读取这一属性会导致一个异常。

事件句柄

onreadystatechange

每次 readyState 属性改变的时候调用的事件句柄函数。当 readyState 为 3 时,它也可能调用多次。

方法

abort()

取消当前响应,关闭连接并且结束任何未决的网络活动。

这个方法把 XMLHttpRequest 对象重置为 readyState 为 0 的状态,并且取消所有未决的网络活动。例如,如果请求用了太长时间,而且响应不再必要的时候,可以调用这个方法。

getAllResponseHeaders()

把 HTTP 响应头部作为未解析的字符串返回。

如果 readyState 小于 3,这个方法返回 null。否则,它返回服务器发送的所有 HTTP 响应的头部。头部作为单个的字符串返回,一行一个头部。每行用换行符 "\r\n" 隔开。

getResponseHeader()

返回指定的 HTTP 响应头部的值。其参数是要返回的 HTTP 响应头部的名称。可以使用任何大小写来制定这个头部名字,和响应头部的比较是不区分大小写的。

该方法的返回值是指定的 HTTP 响应头部的值,如果没有接收到这个头部或者 readyState 小于 3 则为空字符串。如果接收到多个有指定名称的头部,这个头部的值被连接起来并返回,使用逗号和空格分隔开各个头部的值。

open()

HTTP అభ్యర్ధన పరామితులను ప్రారంభించండి, ఉదాహరణకు URL మరియు HTTP పద్ధతి, కాని అభ్యర్ధనను పంపకం లేదు。

send()

HTTP అభ్యర్ధనను పంపండి, open() పద్ధతికి పాస్ అయ్యే పరామితులతో మరియు ఈ పద్ధతికి పాస్ అయ్యే ఐచ్ఛిక అభ్యర్ధన శబ్దములను ఉపయోగించండి。

setRequestHeader()

ఒక తెరిచిన కాని పంపకం లేని అభ్యర్ధనకు HTTP అభ్యర్ధనను సెట్ చేయండి లేదా జోడించండి。

XMLHttpRequest.open()

初始化 HTTP 请求参数

సింథాక్స్

open(method, url, async, username, password)

method 参数是用于请求的 HTTP 方法。值包括 GET、POST 和 HEAD。

url 参数是请求的主体。大多数浏览器实施了一个同源安全策略,并且要求这个 URL 与包含脚本的文本具有相同的主机名和端口。

async పారామితి అభ్యర్థనను అసింక్రోనస్ ప్రవర్తనంగా అమలు చేయాలని సూచిస్తుంది. ఈ పారామితి false అయితే, అభ్యర్థన సింక్రోనస్ అయితుంది, send() కొరకు అనుభవించబడుతుంది వరకు అభ్యర్థన బ్లాక్ చేస్తుంది. ఈ పారామితి true అయితే లేదా కొన్ని వర్గాలను విడిచిపెట్టబడితే, అభ్యర్థన అసింక్రోనస్ అయితుంది, మరియు సాధారణంగా onreadystatechange ఇవెంట్ హాండ్లర్ అవసరం.

username మరియు password పారామితులు వినియోగదారు ఆవశ్యకములు కాదు, url కొరకు అధికారిత అవసరమైన ప్రమాణీకరణ అందిస్తాయి. ఇవి నిర్దేశించబడినప్పుడు, వాటివల్ల url స్వయంగా నిర్దేశించిన ఏ అధికారిత ప్రమాణీకరణను అధిగమించబడుతాయి.

వివరణ

ఈ ఫంక్షన్ సెండ్() ఫంక్షన్ కొరకు ఉపయోగించబడే అభ్యర్థన పారామితులను ప్రారంభిస్తుంది. ఇది readyState ను 1 కి సెట్ చేస్తుంది, మునుపటి అభ్యర్థన హెడర్లను తొలగిస్తుంది, మరియు మునుపటి ప్రతిస్పందన హెడర్లను తొలగిస్తుంది, మరియు responseText, responseXML, status మరియు statusText పారామితులను వాటి డిఫాల్ట్ విలువలకు సెట్ చేస్తుంది. రెడీస్టేట్ 0 కి (కాల్స్ చేసినప్పుడు XMLHttpRequest ఆబ్జెక్ట్ సృష్టించబడినప్పుడు లేదా abort() ఫంక్షన్ కాల్ చేసినప్పుడు) మరియు రెడీస్టేట్ 4 కి (ప్రతిస్పందన అందుకున్నప్పుడు) ఈ ఫంక్షన్ కాల్ చేయడం సురక్షితం. మరే ఇతర స్థితికి ఈ ఫంక్షన్ కాల్ చేయడం ద్వారా open() ఫంక్షన్ ప్రవర్తిస్తుంది.

send() మాధ్యమము ద్వారా ఉపయోగించబడే అభ్యర్థన పారామితులను నిర్వహించడం మరియు XMLHttpRequest ఆబ్జెక్ట్ ను పునర్వినియోగించడానికి పునఃసజ్జీవింపబడడం ద్వారా మాత్రమే open() ఫంక్షన్ ఎల్లప్పుడూ ఎల్లప్పుడూ ప్రవర్తిస్తుంది. ఈ ఫంక్షన్ కాల్ చేసినప్పుడు అమలు సాధారణంగా వెబ్ సేవికలకు కనెక్షన్ తెరవదు.

XMLHttpRequest.send()

ఒక HTTP అభ్యర్థనను పంపండి

సింథాక్స్

send(body)

ఇది open() ఫంక్షన్ ద్వారా నిర్దేశించబడిన HTTP పద్ధతి POST లేదా PUT అయితే, body పారామితి అభ్యర్థన శబ్దమును నిర్దేశిస్తుంది, దానిని స్ట్రింగ్ గా లేదా డాక్యుమెంట్ ఆబ్జెక్ట్అవసరమైనప్పుడు అభ్యర్థన శబ్దము తప్పనికిరాదు అయితే, ఈ పారామితి నుండి null గా ఉంటుంది. మరే ఇతర పద్ధతుల కోసం, ఈ పారామితి ఉపయోగదారు ఉండబాదు, అది null గా ఉండాలి (కొన్ని అమలులు ఈ పారామితిని విడిచిపెట్టకూడదు).

వివరణ

这个方法导致一个 HTTP 请求发送。如果之前没有调用 open(),或者更具体地说,如果 readyState 不是 1,send() 抛出一个异常。否则,它发送一个 HTTP 请求,该请求由以下几部分组成:

  • 之前调用 open() 时指定的 HTTP 方法、URL 以及认证资格(如果有的话)。
  • 之前调用 setRequestHeader() 时指定的请求头部(如果有的话)。
  • 传递给这个方法的 body 参数。

一旦请求发布了,send() 把 readyState 设置为 2,并触发 onreadystatechange 事件句柄。

如果之前调用的 open() 参数 async 为 false,这个方法会阻塞并不会返回,直到 readyState 为 4 并且服务器的响应被完全接收。否则,如果 async 参数为 true,或者这个参数省略了,send() 立即返回,并且正如后面所介绍的,服务器响应将在一个后台线程中处理。

如果服务器响应带有一个 HTTP 重定向,send() 方法或后台线程自动遵从重定向。当所有的 HTTP 响应头部已经接收,send() 或后台线程把 readyState 设置为 3 并触发 onreadystatechange 事件句柄。如果响应较长,send() 或后台线程可能在状态 3 中触发 onreadystatechange 事件句柄:这可以作为一个下载进度指示器。最后,当响应完成,send() 或后台线程把 readyState 设置为 4,并最后一次触发事件句柄。

XMLHttpRequest.setRequestHeader()

సింథాక్స్

setRequestHeader(name, value)

name పారామీటర్ అభ్యర్ధనలో సెట్ చేయబడిన హెడర్ పేరు ఉంటుంది. ఈ పారామీటర్ కామా, కోలన్ లేదా కాంట్రాల్ ని చేర్చకూడదు.

value పారామీటర్ హెడర్ విలువ ఉంటుంది. ఈ పారామీటర్ కాంట్రాల్ ని చేర్చకూడదు.

వివరణ

setRequestHeader() మంథనం ఒక HTTP అభ్యర్ధన హెడర్ నిర్దేశిస్తుంది, దానిని కొనసాగించిన send() అభ్యర్ధనలో చేర్చబడాలి. ఈ మంథనం మాత్రమే readyState 1 అయితే కాల్పడగలదు, ఉదాహరణకు, open() నిర్దేశించిన తర్వాత, send() నిర్దేశించిన ముందు.

ప్రస్తుతం పేరును కలిగిన హెడర్ నిర్దేశించబడింది అయితే, ఈ హెడర్ కొత్త విలువ ఈ విధంగా ఉంటుంది: క్రితం నిర్దేశించిన విలువ తో కలిసి కావలసిన కామా, స్పేస్ మరియు ఈ కాల్ ప్రదర్శించిన విలువ.

ఇక్కడ open() కాల్లో గుర్తింపు సంకేతం నిర్దేశించబడింది అయితే, XMLHttpRequest తాప్పుగా Authorization రెక్కెడ్ హెడర్ను పంపుతుంది. కానీ, మీరు setRequestHeader() ను ఉపయోగించి ఈ హెడర్ను జోడించవచ్చు. ఇదే పద్ధతిలో, ఇక్కడ open() కాల్లో అందించబడిన URL తో సంబంధించిన cookie ను వెబ్ సర్వర్ నిర్వహించింది అయితే, తగిన కూకీ లేదా Cookie2 రెక్కెడ్ హెడర్లు కూడా తాప్పుగా సమ్మిళితం అవుతాయి. ఈ కూకీలను రెక్కెడ్ హెడర్లులో జోడించడానికి setRequestHeader() ను కాల్లోడించవచ్చు. XMLHttpRequest కూడా User-Agent రెక్కెడ్ హెడర్ను ఒక డిఫాల్ట్ విలువ అందిస్తుంది. ఇది చేసితే, ఈ హెడర్నకు మీరు కేటాయించిన ఏ విలువనైనా ఈ డిఫాల్ట్ విలువకు తర్వాత జోడించబడుతుంది.

కొన్ని రెక్కెడ్ హెడర్లు XMLHttpRequest ద్వారా స్వయంచాలకంగా అమర్చబడతాయి, ఈ మాధ్యమం ద్వారా అమర్చబడలేదు. ఇది HTTP ప్రొటోకాలు నడుపుతుంది. ఇది ప్రతిరోజు సంబంధించిన హెడర్లు ఉన్నాయి:

  • Host
  • Connection
  • Keep-Alive
  • Accept-charset
  • Accept-Encoding
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • Range