javascript XMLHttpRequest.send() 方法

来源:互联网 发布:linux gdb命令 编辑:程序博客网 时间:2024/06/10 09:45

下文 为转帖


XMLHttpRequest.send()

发送一个 HTTP 请求


语法

send(body)


如果通过调用 open() 指定的 HTTP 方法是 POST 或 PUT,body 参数指定了请求体,作为一个字符串或者 Document 对象。

如果请求体不适必须的话,这个参数就为 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,并最后一次触发事件句柄。