zoukankan      html  css  js  c++  java
  • 初识AJAX


    1 简介

    Asynchronous JavaScript + XML(异步的JavaScript和XML), 其本身不是一种新技术,而是一个在2005年被 Jesse James Garrett 提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML or XHTML, Cascading Style Sheets, JavaScript, The Document Object Model, XML, XSLT, 以及最重要的 XMLHttpRequest object。当使用结合了这些技术的AJAX模型以后网页能够快速地将 增量更新 呈现在用户界面上,而不需要重载(刷新)整个页面。这使得程序能够更快地回应用户的操作

    尽管X在Ajax中代表XML, 由于JSON的许多优势,比如更加轻量以及作为Javascript的一部分,目前JSON的使用比XML更加普遍。JSON和XML都被用于在Ajax模型中打包信息。

    2 AJAX入门

    2.1 原理

    AJAX 使用XMLHttpRequest对象与服务器进行通信。它可以以各种格式发送和接收信息,包括JSON,XML,HTML和文本文件。AJAX最吸引人的特性是它的“异步”特性,这意味着它可以与服务器通信,交换数据和更新页面而无需刷新页面

    2.2 主要功能

    AJAX的主要功能允许您执行以下操作:
    在不重新加载页面的情况下向服务器发出请求(无刷新发请求
    接收和处理来自服务器的数据(接收并处理响应

    2.3 发送AJAX请求

    JavaScript使用XMLHttpRequest对象向服务器发送HTTP请求。

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        // Process the server response here.
    }
    xhr.open('GET', 'http://www.example.org/some.file', true);
    xhr.send();
    

    var xhr = new XMLHttpRequest();
    创建一个XMLHttpRequest对象,有向服务器发起HTTP请求,并接收服务器给出的响应的功能

    xhr.onreadystatechange = function() {}
    声明readyState改变时触发的事件

    xhr.open('GET', 'http://www.example.org/some.file', true);
    xhr.send();
    调用HTTP请求对象的open()和send()方法用于发送实际的请求

    open()方法

    第一个参数是HTTP 请求方法。GET,POST,HEAD或服务器支持的其他方法。按照HTTP标准 保持方法全大写,否则某些浏览器(如Firefox)可能无法处理请求。
    第二个参数是您要发送 请求的URL。作为安全功能,默认情况下,您无法在第三方域上调用URL。无法进行跨域请求
    第三个参数(可选)设置请求是否是异步请求。如果true(默认值),JavaScript执行将继续,并且用户可以在服务器响应尚未到达时与页面进行交互。这是AJAX中的第一个A.

    send()方法

    方法的参数可以是您在发送POST请求时要发送到服务器的任何数据。表单数据应以服务器可以解析的格式发送,如查询字符串:

    "name=value&anothername="+encodeURIComponent(myVar)+"&so=on"
    或其他格式,如multipart/form-dataJSON,XML等。

    请注意,如果您想要POST数据,则可能必须设置请求的MIME类型。例如,在调用send()作为查询字符串发送的表单数据之前,请使用以下命令:

    httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    

    2.4 处理服务器返回的响应

    发送请求时,声明了readyState改变时处理响应的函数,也可以按下面的方式来声明处理响应的函数。
    xhr.onreadystatechange = nameOfTheFunction;
    这个函数应该做什么?首先,该函数需要检查请求的状态。如果状态的值为XMLHttpRequest.DONE(对应于4),则表示已收到完整的服务器响应,您可以继续处理它。

    if (httpRequest.readyState === XMLHttpRequest.DONE) {
        // Everything is good, the response was received.
    } else {
        // Not ready yet.
    }
    

    完整的readyState值列表记录在XMLHTTPRequest.readyState中,如下所示:

    readyState 状态描述 说明
    0 UNSENT 代理被创建,但尚未调用 open() 方法。
    1 OPENED open() 方法已经被调用。
    2 HEADERS_RECEIVED send() 方法已经被调用,并且头部和状态已经可获得。
    3 LOADING 下载中; responseText 属性已经包含部分数据。
    4 DONE 下载操作已完成。

    接下来,检查HTTP响应的HTTP响应状态代码 。在下面的示例中,通过检查200 OK响应代码来区分成功和不成功的AJAX调用。

    if (httpRequest.status === 200) {
        // Perfect!
    } else {
        // There was a problem with the request.
        // For example, the response may have a 404 (Not Found)
        // or 500 (Internal Server Error) response code.
    }
    

    在检查请求的状态和响应的HTTP状态代码之后,您可以使用服务器发送的数据执行任何操作。您有两种方法可以访问该数据

    httpRequest.responseText - 将服务器响应作为一串文本返回
    httpRequest.responseXML- 将响应作为XMLDocument可以使用JavaScript DOM函数遍历的对象返回
    请注意,只有在使用异步请求(第三个参数open()未指定或设置为true)时,上述步骤才有效。如果您使用 同步请求,则不需要指定功能,但这是非常不鼓励的,因为它会带来糟糕的用户体验。

    详细内容请参考:https://developer.mozilla.org/en-US/docs/Web/Guide/AJAX/Getting_Started

  • 相关阅读:
    HTML 文本格式化实例
    HTML 文本格式化实例--预格式文本+“计算机输出”标签
    HTML 文本格式化实例--文本格式化
    如何用通俗易懂的语言解释脚本(script)是什么?
    1. HTML 基础标签
    java 和 python的一些对比
    XML fragments parsed from previous mappers does not contain value for com.miniprogram.meirong.comment.dao.CommentMapper.Base_Column_List
    The request was rejected because the URL was not normalized.
    fastjson的简单使用
    微信小程序的分页
  • 原文地址:https://www.cnblogs.com/spy-chiang/p/9862559.html
Copyright © 2011-2022 走看看