Asynchronous JavaScript + XML(异步JavaScript和XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
对于GET请求,需要在地址后面以查询字符串方式加上携带的参数,最后一个参数默认为true,异步
xhr.send();如果需要像 HTML 表单那样 POST 数据,在send()函数之前用setRequestHeader() 来添加 HTTP 头。 send() 方法中规定您希望发送的数据:
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.send("fname=Henry&lname=Ford");当请求被发送到服务器时,我们需要执行一些基于响应的任务。 每当 readyState 改变时,就会触发 onreadystatechange事件。 readyState 属性存有 XMLHttpRequest 的状态信息。 下面是XMLHttpRequest 对象的三个重要的属性
属性描述onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪
xhr.onreadystatechange=function(){ if (xhr.readyState==4 && xhr.status==200){ document.getElementById("myDiv").innerHTML=xhr.responseText; } }xhr.responseText获得字符串形式的响应数据 responseXML获得 XML 形式的响应数据
由 请求行、请求头部、空行、请求数据 四部分组成
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。 GET /data/info.html HTTP/1.1
HTTP协议版本有两种:HTTP1.0/HTTP1.1: HTTP1.0对于每个连接都只能传送一个请求和响应,请求完服务器返回响应就会关闭,HTTP1.0没有Host字段。 而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。
用来描述客户端基本信息,由多行键值对组成
常见的请求头字段含义:
部分头部字段名称描述Accept-Charset浏览器可接受的字符集Accept-Language浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到Host请求的服务器域名Content-Length表示请求消息正文的长度Accept浏览器可接受的响应内容类型列表Cookie通过这个头可以向服务器带数据User-Agent浏览器类型通过一个空行,告诉服务器请求头部到此为止,分隔作用
若方法字段是GET,则此项为空,没有数据 若方法字段是POST,则通常来说此处放置的就是要提交的数据
响应报文也由三部分组成:响应行、响应头、空行、响应体
响应行一般由协议版本、状态码及其描述组成
HTTP/1.1 200 OK 状态码描述说明1xx这一类型的状态码,代表请求已被接受,需要继续处理,不常见200ok客户端请求成功301Moved Permanently被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一302Found在响应报文中使用首部“Location: URL”指定临时资源位置304Not Modified未修改,服务器不会返回任何资源400Bad Request语义有误,一般为参数错误401Unauthorized请求需要用户验证,一般为权限不够403Forbidden服务器已理解,但是拒绝执行404Not Found服务器无法找到请求的URL405Method Not Allowed不允许使用此方法请求相应的URL408Request Timeout请求超时500Internal Server Error服务器内部错误501Internal Server Error服务器不支持改请求方法502Bad Gateway代理服务器从上游收到了一条伪响应503Service Unavailable服务器此时无法提供服务,但将来可能可用响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。
响应头字段描述Allow服务器支持哪些请求方法Content-Length表示内容长度Date当前的GMT时间,例如,Date:Mon,31Dec200104:25:57GMTLast-Modified文档的最后改动时间Set-Cookie设置和页面关联的CookieTransfer-Encoding告诉浏览器数据的传送格式setContentType设置Content-Type头。大多数Servlet都要用到这个方法响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码。
