Ajax对象XMLHttpRequest对象的属性和方法详解

XMLHttpRequest对象的属性和方法
首先XMLHttpRequest 对象用于在后台与服务器交换数据。

1.readyState属性

状态:0 代表未初始化。

1 代表准备发送。

2 已发送但还没收到响应

3 正在接收

4 接收完成

2.responseText属性

包含客户端接收到的HTTP响应的文本内容。

当readyState=4时,responseText才包含完整的响应信息。

当readyState=3时,responseText包含未完整的响应信息。

当readyState<3时,responseText为空字符串。

 

3.responseXML属性

当readyState=4,并且响应头部的Content-Type的MIME类型为XML(text/xml或application/xml)时,该属性有值并且被解析成一个XML文档。

其它情况为null,包括回传的XML文档不良或未完成响应回传。

 

4.status及statusText属性(描述http状态代码,及代码文本)

status==200 表示访问服务器成功;

statusText 是从服务器获取的文本信息;

当readyState>2,才能访问,否则出现异常。

5.onreadystatechange事件

当readyState属性发生变化时触发此事件,用于触发回调函数。

 

6.open方法

open(method, uri, async, username, password) 用来进行初始化工作

返回值:得到一个包含send()方法的对象

method:必须。用于指定HTTP方法如GET,POST,PUT....。按规定必须大写。

uri:请求发送到服务器相应的URI.自动解析成绝对地址。

async:请求是否异步,默认为true.

调用open后,readystate状态为1.

 

7.send方法

调用open 方法后,可以调用send()方法来发送请求。

当open 中async=true时,send()方法调用后立即返回,否则会中断直到请求返回。

send(data)

data:可选。此处还有疑问。。

 

8.abort()方法

该方法可以暂停一个HttpRequest请求或者HttpResponse的接收,并且将XMLHttpRequest的状态设置为初始化。

 

 

9.setRequestHeader(header,value)方法

该方法用来设置请求的头部信息。在调用open()后调用这个方法。否则将得到一个异常。

10.getResponseHeader()方法

当readystate>2时,该方法用来检索响应的头部信息。否则返回一个空字符串。

getAllResponseHeaders()方法返回所有的HttpResponse头部信息。

 

11.onreadystatechange 是一个事件句柄.

它的值 (state_Change) 是一个函数的名称,当 XMLHttpRequest 对象的状态发生改变时,会触发此函数。状态从 0 (uninitialized) 到 4 (complete) 进行变化。仅在状态为 4 时,我们才执行代码。

XMLHttpRequest对象简单实例:

新建一个Ajax.html文件,代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Ajax</title>
  </head>
  <body>
    <script>
    // 1建立Ajax对象
    var xhr = new XMLHttpRequest();
    // 2创建请求
    xhr.open('post','test.php');
    // 3post发送 post请求必须设置请求头 固定,记住就好
    xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
    xhr.send('username=张三&password=123');
    // 4接收服务器返回的数据
    xhr.onreadystatechange = function(data){
      // console.log(xhr.readyState);
      if (xhr.readyState == 4 && xhr.status == 200) {
        // console.log(xhr.responseText);
        // 通过responseText获取服务器返回的数
        var oDiv =document.createElement('div');
        oDiv.innerHTML = xhr.responseText;
        document.body.appendChild(oDiv);
      }
    }

    </script>
  </body>
</html>

同级目录下建test.php:

<?php

$username = $_POST['username'];
$password = $_POST['password'];
file_put_contents('log.txt', $username.'---'.$password);
echo file_get_contents('log.txt');
var_dump($username);
echo json_encode(['success'=>1,'msg'=>'接收成功']);

posted @ 2017-07-05 17:38  星之蓝  阅读(2339)  评论(0编辑  收藏  举报