zoukankan      html  css  js  c++  java
  • AJAX相关知识

    AJAX相关知识


    一、AJAX简介

    AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术

    AJAX = 异步 JavaScript 和 XML

    AJAX是一种用于创建快速动态网页的技术。

    通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对某部分进行更新。

    传统的网页(不使用AJAX)如果需要更新内容,必须重载整个网页面。

    有很多使用AJAX的应用程序案例:新浪微博、Google地图、开心网等等。


    二、AJAX实例

    实例

    Let AJAX change this text


    点击按钮后,应该显示如下:

    AJAX is not a programming language.

    It is just a technique for creating better and more interactive web applications.

    AJAX实例解释

    上面的AJAX应用程序包含一个div和一个按钮,div部分用于显示来自服务器的信息。当按钮被点击时,它负责调用名为loadXMLDoc()的函数。

    <html>
    <body>
    
    <div id="myDiv"><h3>Let AJAX change this text</h3></div>
    <button type="button" onclick="loadXMLDoc()">Change Content</button>
    
    </body>
    </html>
    

    接下来,在页面的head部分添加一个<script>标签,该标签中包含了这个loadXMLDoc()函数。

    <head>
    <script type="text/javascript">
    function loadXMLDoc()
    {
    xmlhttp=null;
    if (window.XMLHttpRequest)
    {
    xmlhttp=new XMLHttpRequest();
    }
    }
    </script>
    </head>
    

    三、XHR创建对象

    XMLHttpRequest是AJAX的基础

    XMLHttpRequest对象

    所有现代浏览器均支持XMLHttpRequest对象(IE5和IE6使用ActiveXObject)。

    XMLHttpRequest用于在后台与服务器交换数据。这意味着可以在不加载整个网页的情况下,对网页的某部分进行更新。


    创建XMLHttpRequest对象

    所有现代浏览器(IE7+、Firefox、Chrome、Safari以及Opera)均内建XMLHttpRequest对象。

    创建XMLHttpRequest对象的语法:

    variable=new XMLHttpRequest();

    为了应对所有的现代浏览器,包括IE5和IE6,请检查浏览器是否支持XMLHttpRequest对象。如果支持,则创建XMLHttpRequest对象。如果不支持,则创建ActiveXObeject:

    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    

    四、XHR请求

    XMLHttpRequest对象用于和服务器交换数据

    向服务器发送请求

    如需将请求发送到服务器,我们使用XMLHttpRequest对象的open()和send()方法:

    xmlhttp.open("GET","test1.txt",true);
    xmlhttp.send();
    
    方法 描述
    open(method,url,async)

    规定请求的类型、URL 以及是否异步处理请求。

    • method:请求的类型;GET 或 POST
    • url:文件在服务器上的位置
    • async:true(异步)或 false(同步)
    send(string)

    将请求发送到服务器。

    • string:仅用于POST请求

    GET还是POST?

    与POST相比,GET更简单也更快,并且在大部分情况下都能用。

    然而,在以下情况下,请使用POST请求:

    • 无法使用缓存文件(更新服务器上的文件或数据库)
    • 向服务器发送大了数据(POST没有数据量限制)
    • 发送包含未知字符的用户输入时,POST比GET更稳定也更可靠

    GET请求

    一个简单的GET请求:

    xmlhttp.open("GET","demo_get.asp", true);
    xmlhttp.send();
    

    如果希望通过GET方法发送信息,请向URL添加信息:

    xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true);
    xmlhttp.send();
    

    POST请求

    一个简单的POST请求:

    xmlhttp.open("POST","demo_post.asp",true);
    xmlhttp.send();
    

    如果需要像HTML表单那样POST数据,请使用setRequestHeader()来添加HTTP头。然后在send()方法中规定希望的数据:

    xmlhttp.open("POST","ajax_test.asp",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send("fname=Bill&lname=Gates");
    
    url-服务器上的文件

    open()方法的url参数是服务器上文件的地址:

    xmlhttp.open("GET","ajax_test.asp",true);
    

    该文件可以是任何类型的文件,比如.txt和.xml,或者服务器脚本文件,比如.asp和.php(在传回响应之前,能够在服务器上执行任务)。


    五、XHR响应

    服务器响应

    如需获得来自服务器的响应,请使用XMLHttpRequest对象的responseText或responseXML属性。

    属性 描述
    responseText 获得字符串形式的响应数据
    responseXML 获得XML形式的响应数据

    responseText属性

    如果来自服务器的响应并非XML,请使用responseText属性;
    responseText属性返回字符串形式的响应,因此可以这么使用:

    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    

    responseXML属性

    如果来自服务器的响应是XML,而且需要作为XML对象进行解析,请使用responseXML属性:
    请求books.xml文件,并解析响应:

    xmlDoc=xmlhttp.responseXML;
    txt="";
    x=xmlDoc.getElementsByTagName("ARTIST");
    for (i=0;i<x.length;i++)
      {
      txt=txt + x[i].childNodes[0].nodeValue + "<br />";
      }
    document.getElementById("myDiv").innerHTML=txt;
    
    
  • 相关阅读:
    Windows Azure Redis 缓存服务
    Windows Azure支持七层负载均衡--Application Gateway
    使用中国版 Office 365 -- Team Site分享
    翻译 GITHUB上HOW TO BE A GOOD PROGRAMMER
    翻译 github上How to be a good programmer
    linux note
    vim note
    编程策略类note
    jni note
    python note
  • 原文地址:https://www.cnblogs.com/sandysun/p/8952260.html
Copyright © 2011-2022 走看看