• AJAX——理解XMLHttpRequest对象


              AJAX大家已经都知道了,XMLHttpRequest对象则是AJAX的核心。这篇博客重点总结一下这个对象的使用。

     

    XMLHttpRequest对象的属性和方法:

    属性

    说明

    readyState

    表示XMLHttpRequest对象的状态:0:未初始化。对象已创建,未调用open

    1open方法成功调用,但Sendf方法未调用;

    2send方法已经调用,尚未开始接受数据;

    3:正在接受数据。Http响应头信息已经接受,但尚未接收完成;

    4:完成,即响应数据接受完成。

    Onreadystatechange

    请求状态改变的事件触发器(readyState变化时会调用这个属性上注册的javascript函数)。

    responseText

    服务器响应的文本内容

    responseXML

    服务器响应的XML内容对应的DOM对象

    Status

    服务器返回的http状态码。200表示“成功”,404表示“未找到”,500表示“服务器内部错误”等。

    statusText

    服务器返回状态的文本信息。

     

     

    方法

    说明

    Open(string method,string url,boolean asynch,

    String username,string password)

    指定和服务器端交互的HTTP方法,URL地址,即其他请求信息;

    Method:表示http请求方法,一般使用"GET","POST".

    url:表示请求的服务器的地址;

    asynch:表示是否采用异步方法,true为异步,false为同步;

    后边两个可以不指定,usernamepassword分别表示用户名和密码,提供http认证机制需要的用户名和密码。

    Send(content)

    向服务器发出请求,如果采用异步方式,该方法会立即返回。

    content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。

    SetRequestHeader(String header,String Value)

    设置HTTP请求中的指定头部header的值为value.

    此方法需在open方法以后调用,一般在post方式中使用。

    getAllResponseHeaders()

    返回包含Http的所有响应头信息,其中相应头包括Content-length,date,uri等内容。

    返回值是一个字符串,包含所有头信息,其中每个键名和键值用冒号分开,每一组键之间用CRLF(回车加换行符)来分隔!

    getResponseHeader(String header)

    返回HTTP响应头中指定的键名header对应的值

    Abort()

    停止当前http请求。对应的XMLHttpRequest对象会复位到未初始化的状态。

     

      
    XMLHttpRequest对象的兼容性:
    • IE8/IE9、Opera Mini 完全不支持xhr对象

    • IE10/IE11部分支持,不支持 xhr.responseTypejson

    • 部分浏览器不支持设置请求超时,即无法使用xhr.timeout

    • 部分浏览器不支持xhr.responseTypeblob

      
    XMLHttpRequest对象的应用:
     1 function ajax(url,postData,fnSuc){
     2       var xhr;
     3       if(window.XMLHttpRequest){
     4         xhr= new XMLHttpRequest();
     5         //console.log(xhr);
     6       }else{
     7         // alert("不存在");
     8         xhr= new ActiveXObject("Microsoft.XMLHTTP");
     9          //alert(xhr);
    10       }//XMLHttpRequest兼容性处理
    11     xhr.open("POST", url , true);//指定请求的方式post/get,url,true/false(异步/同步)
    12     xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    13     xhr.onreadystatechange = function(){//请求状态改变时触发
    14         var XMLHttpReq = xhr;
    15         if (XMLHttpReq.readyState == 4) {//数据接受完成
    16             if (XMLHttpReq.status == 200) {//服务器返回的http状态码,200表示成功
    17                 var text = XMLHttpReq.responseText;//服务器响应的文本内容
    18                 fnSuc(JSON.parse(text));//请求成功时返回的数据
    19             }
    20         }
    21     };
    22     postData = (function(obj){ // 转成post需要的字符串
    23         var str = "";
    24         for(var prop in obj){
    25             str += prop + "=" + obj[prop] + "&"
    26         }
    27         return str;
    28     })(postData);
    29     xhr.send(postData);//向服务器发送请求
    30 }

    这是XMLHttpRequest简单的应用,使用时直接调用就行了,使用的是post请求可以传参,返回的是json数据便于处理,当然有其他需求可以根据情况添加。

  • 相关阅读:
    JAVA入门之开发环境搭建
    webpack 打包json文件,报 Unexpected token, expected ";"错误解决方案
    node.js Linux下Date.prototype.toLocaleString()仅支持英文的坑
    Javascript高级程序设计之DOM
    JavaScript高级程序设计之客户端检测
    JavaScript高级程序设计之事件
    JavaScript高级程序设计之BOM
    JavaScript高级程序设计之函数表达式
    JavaScript高级程序设计之面向对象程序设计
    FileReader对象——如何实现File中数据的读取
  • 原文地址:https://www.cnblogs.com/coober/p/6542779.html
Copyright © 2020-2023  润新知