当前位置: 首页 > Web前端 > HTML

简单描述xhr——xhr的基本使用

时间:2023-03-28 00:17:13 HTML

XMLHttpRequestAPI总结属性:readyStatexhr状态码4响应体接收状态获取状态码responseText获取响应体,文本格式responseXML获取响应体,xml格式onreadtstatechange事件,当xhr.readyState属性的变化触发onload事件,并收到响应。Method:open(method,url,async)设置请求方法,请求路径,同步/异步send(requestBody)发送请求体setRequestHeader(key,value)设置请求头getResponseHeader(key)获取响应头的方法requestonload:方便获取response的事件GET创建一个xhr对象并调用open方法,设置请求方法和URL并调用send方法,发送。当请求响应过程结束时(调用xhr.onload事件),通过responseText属性接收服务器返回的数据。ajaxgetrequestdocument.getElementById('btn').onclick=function(){//创建一个xhr对象letxhr=newXMLHttpRequest()//调用open方法设置请求方法和URLxhr.open('GET','http://127.0.0.1:3000/search')//调用发送方法,发送xhr.send()//当请求响应过程结束时(调用xhr.onload事件),接收服务端通过responseText属性返回的数据xhr.onload=function(){console.log(xhr.responseText)}}注:GET请求IE缓存及解决方法原因:两次请求的url完全一样,并且第二次请求的url那时IE不会再向服务器发送请求,而是使用第一次返回的结果来解决:要让每次请求的url不一致,可以加上时间戳参数POST来创建一个xhr对象调用open方法,设置请求方法和URL调用setRequestHeader()方法,设置header,指定content-type调用send方法,发送请求响应完成时服务器返回的数据//创建一个xhr对象letxhr=newXMLHttpRequest()//调用openmethod,设置请求方法和URLxhr.open('POST','http://127.0.0.1:3000/search')//调用setRequestHeader()方法,设置header,指定content-typexhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')//调用send方法发送xhr.send('x=11111')//当请求响应完成后,接收服务器返回的数据xhr.onreadystatechange=function(){if(xhr.readyState===4||xhr.status===200){console.log(xhr.responseText);}}基本get方法和post方法的区别AjaxGET请求和ajaxpost请求,传递参数的位置不同。GET请求只能携带少量参数。POST请求携带的数据没有限制。只有POST请求才能上传文件。onreadystatechange和readyStatereadyStatexhr的五个状态readyState的值为4,表示浏览器已经完全接收到服务器的返回数据readyState状态描述显示0UNSENT代理(XHR)已经创建,但是open()方法还没有被调用.1OPENEDopen()方法已被调用,连接已建立。2HEADERS_RECEIVEDsend()方法已经调用,已经可以获取到状态行和响应头。3LOADING响应体下载,responseText属性可能已经包含了一些数据。4DONE响应体已经下载,可以直接使用responseText。onreadystatechangejax执行状态改变(当readyState的值改变时)会被触发当接收到的数据改变时,这个事件也会被触发。它可以同步和异步替换onload事件。xhr.open()第三个参数传入的是Boolean值,作用是设置请求是否异步执行。默认为true异步,false为synchronous同步请求。ajax同步请求会卡在send方法中。当服务器返回数据后,就可以执行后续代码了。否赞成使用异步请求ajax异步请求,不会阻塞后续代码执行,赞成兼容IE5、IE6:noXMLHttpRequestobjectvarxhr=window.XMLHttpRequest?新的XMLHttpRequest():newActiveXObject('Microsoft.XMLHTTP');总结Ajax是浏览器提供的一组API,可以通过JavaScript调用,从而通过代码控制请求和响应,实现网络编程。本文到此结束。如果觉得还是有用的,可以关注或者点赞,谢谢!