• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    AJAX的原理—如何做到异步和局部刷新【实现代码】

    Overriew: onReadyStateChange被回调函数赋值,则能实现异步调用,回调函数直接操作DOM,则能实现局部刷新。那么XMLHttpRequest的onReadyStateChange如何知道服务ready了呢?状态如何change了呢(观察者模式)?则是通过客户端对服务的状态询问(定期轮询)所实现的。

    详解:

    1.  XMLHttpRequest 负责与服务器端的通讯,其内部有很多重要的属性:readyStatus=4,status=200等等。当XMLHttpRequest的整体状态并且保证它已经完成(readyStatus=4),即数据已经发送完毕。然后根据服务器的设定询问(类似于客户端会轮询服务器的返回状态,仍然是http短连接,并非长连接的服务器端push)请求状态,如果一切已经就绪(status=200),那么就执行需要的操作。

    操作一般就是直接操作DOM,所以AJAX能做到所谓的“无刷新”用户体验。

    document.getElementById("user1").innerHTML = "数据正在加载...";
          if (xmlhttp.status == 200) {
            document.write(xmlhttp.responseText);
          }

    2.  那么在AJAX客户端如何做到的异步呢?实际上就是Javascript的回调函数起的作用

    提供一个回调JavaScript函数,一旦服务器响应可用,该函数就被执行

    业务函数:

    function castVote(rank) {
     var url = "/ajax-demo/static-article-ranking.html";
     var callback = processAjaxResponse;
     executeXhr(callback, url);
    }
    需要异步通讯的函数: 
    
    
    function executeXhr(callback, url) {
     // branch for native XMLHttpRequest object
     if (window.XMLHttpRequest) {
      req = new XMLHttpRequest();
      req.onreadystatechange = callback;
      req.open("GET", url, true);
      req.send()(null);
     } // branch for IE/Windows ActiveX version
     else if (window.ActiveXObject) {
      req = new ActiveXObject("Microsoft.XMLHTTP");
      if (req) {
       req.onreadystatechange = callback;
       req.open("GET", url, true);
       req.send()();
      }
     }
    }
    req.onreadystatechange = callback
    req.open("GET", url, true)
    
    

    第一行定义了JavaScript回调函数,一旦响应就绪它就自动执行,而req.open()方法中所指定的“true”标志说明想要异步执行该请求。

    一旦服务器处理完XmlHttpRequest并返回给浏览器,使用req.onreadystatechange指派所设置的回调方法将被自动调用。

    回调函数:

    function processAjaxResponse() {
     if (req.readyState == 4) {
      // only if "OK"
      if (req.status == 200) {
       document.getElementById("user1").innerHTML = req.responseText;
      } else {
       alert("There was a problem retrieving the XML data:
    " + req.statusText);
      }
     }
    }
    
    

    以上这篇AJAX的原理—如何做到异步和局部刷新【实现代码】就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • JQuery的Ajax请求实现局部刷新的简单实例
    • jQuery+ajax实现局部刷新的两种方法
    • ajax局部刷新一个div下jsp内容的方法
    • jquery ajax 局部刷新小案例
    • ajax局部刷新实例 (三种方法推荐)
    • Ajax实现带有验证码的局部刷新登录界面
    • 纯JS实现AJAX局部刷新功能
    • 利用ajax实现简单的注册验证局部刷新实例
    • Ajax局部刷新应用案例---简单登录
    • Ajax实现局部刷新的方法实例
    上一篇:如何使用AJAX实现按需加载【推荐】
    下一篇:ajax传递多个参数的实现代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    AJAX的原理—如何做到异步和局部刷新【实现代码】 AJAX,的,原理,如何,做到,