• Ajax:异步的 JavaScript 和 XML


    目录

    AJAX 应用

    XMLHttpRequest对象

    获得XMLHttpRequest对象 

    XMLHttpRequest方法

    XMLHttpRequest属性

    AJAX交互示例:get请求

    AJAX交互示例:post请求


    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

    AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

    AJAX 最大的优点是在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。

    AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

    AJAX不是一门新的语言或技术,是由JavaScriptXMLDOMCSS等多种已有技术组合而成的一种浏览器端技术。

    AJAX 应用

    • 运用 XHTML+CSS 来表达资讯;

    • 运用 JavaScript 操作 DOM(Document Object Model)来执行动态效果;

    • 运用 XML 和 XSLT 操作资料;

    • 运用 XMLHttpRequest 或新的 Fetch API 与网页服务器进行异步资料交换;

    • 注意:AJAX 与 Flash、Silverlight 和 Java Applet 等 RIA 技术是有区分的。

    AJAX提供与服务器异步通信的能力,可以在Web页面触发的JavaScript事件中向服务器发出异步请求,执行更新或查询数据库 。

    AJAX的核心是JavaScript对象XMLHttpRequest,该对象在IE 5中首次引入,使用户通过JavaScript向服务器提出请求并处理响应,而不阻塞用户。

    Web服务器的响应返回时,使用JavaScript回调函数和CSS来相应地更新页面的局部内容,而不是刷新整个页面。

    在页面与服务器交互的过程中不中断用户操作,用户甚至察觉不到浏览器正在与服务器通信。

    XMLHttpRequest对象

    XMLHttpRequest对象最初是在IE5中以ActiveX组件的形式实现的,但只能在IE浏览器中使用。其后在MozillaSafari等浏览器中相继实现,才成为事实上的标准。目前FireFoxSafariOperaIE7中都以类似的方式实现了XMLHttpRequest对象。

    由于XMLHttpRequest不是w3c的标准,可以采用多种方法创建XMLHttpRequest对象。在使用XMLHttpRequest对象发生请求和处理之前,必须首先使用JavaScript获得XMLHttpRequest对象。

    获得XMLHttpRequest对象 

    W3C标准

    var xhr = new XMLHttpRequest();

     早期IE浏览器

    var xhr = new ActiveXObject('Microsoft.XMLHTTP');

    var xhr = new ActiveXObject('Msxml2.XMLHTTP');

    var xhr = new ActiveXObject('Msxml2.XMLHTTP.3.0');

    var xhr = new ActiveXObject('Msxml2.XMLHTTP.5.0');

    var xhr = new ActiveXObject('Msxml2.XMLHTTP.6.0');

    var xmlhttp;

    if (window.XMLHttpRequest) {

             // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码

            xmlhttp=new XMLHttpRequest();

    } else {

            // IE6, IE5 浏览器执行代码

            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

    }

    XMLHttpRequest方法

    方法描述

    abort()

    停止当前请求

    getAllResponseHeaders()

    将所有HTTP请求的响应首部作为键/值对返回

    getResponseHeader(header)

    返回指定响应的首部信息

    open(method,URL)

    建立对服务器的调用,方法通常是postgetURL可以绝对路径或相对路径

    send(content)

    向服务器发送请求,参数可以是null

    setRequestHeader(header, value)

    设置HTTP请求的首部信息,可以向服务器传递参数,这个方法必须在open之后调用。

    XMLHttpRequest属性

    属性描述

    Onreadystatechange

    每次状态改变所触发事件的事件处理程序

    readyState

    对象状态值:

    0 = 未初始化(uninitialized

    1 = 正在加载(loading

    2 = 加载完毕(loaded

    3 = 交互(interactive

    4 = 完成(complete

    responseText

    从服务器进程返回的数据的字符串形式

    responseXML

    从服务器进程返回的DOM兼容的文档数据对象

    status

    从服务器返回的数字代码,如404(未找到)或200(就绪)

    statusText

    伴随状态码的字符串信息

    AJAX交互示例:get请求

    1. var oRequest;
    2. function getTitleInfo(titleid){
    3. oRequest = getHttpRequest(); // 获得XMLHttpRequest对象
    4. oRequest.open(“get” , “AJAXServlet” , true); // 建立对服务器的异步调用
    5. //也可以通过url重写传递:oRequest.open(“get” , “AJAXServlet? uname=”+name , true);
    6. oRequest.onreadystatechange = myfun;
    7. oRequest.send(null); // 向服务器发送异步调用请求
    8. }
    9. function myfun(){
    10. // (回调处理)
    11. if (oRequest.readyState == 4&&oRequest.status==200)
    12. {
    13. var result = oRequest.responseText;
    14. var msgdiv = document.getElementById("message");
    15. msgdiv.innerHTML = result;
    16. }
    17. }

    AJAX交互示例:post请求

    1. var oRequest;
    2. function getTitleInfo(titleid){
    3. oRequest = getHttpRequest(); // 获得XMLHttpRequest对象
    4. var postStr = "user_name="+ userName +"&user_age="+ userAge ;
    5. oRequest.open(“POST” , “AJAXServlet” , true); // 建立对服务器的异步调用
    6. oRequest.setRequestHeader("Content-Type",
    7. "application/x-www-form-urlencoded");
    8. oRequest.onreadystatechange = myfun;
    9. oRequest.send(postStr); // 向服务器发送异步调用请求
    10. }
    11. function myfun(){// 显示书籍信息(回调处理)
    12. if (oRequest.readyState == 4&&oRequest.status==200)
    13. {
    14. var result = oRequest.responseText;
    15. var msgdiv = document.
    16. getElementById("message");
    17. msgdiv.innerHTML = result;
    18. }
    19. }
  • 相关阅读:
    超级炫酷的终端神器 eDEX-UI
    YOLOv3: An Incremental Improvement 论文详细解读
    基于DF模式的协作通信技术matlab性能仿真
    金仓数据库 Oracle至KingbaseES迁移最佳实践(2. 概述)
    智能双星:遥测终端机与柳林“巡检机器人“,助力智能运维新升级!
    内存寻址方式
    node插件MongoDB(五)—— 库mongoose 的模块化(五)
    APP广告变现痛点,开发者如何解决?
    索引覆盖是什么
    Kubernetes(k8s)进阶
  • 原文地址:https://blog.csdn.net/weixin_61562639/article/details/126319866