zoukankan      html  css  js  c++  java
  • JavaScript 之 AJAX 请求

    一、Ajax 简介

      1、概述

        AJAX 即 “Asynchronous Javascript And XML(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。 

        Ajax 是一种浏览器通过 JavaScript 异步发起请求,在与服务器交换数据并更新部分网页的,即在不重新加载整个页面的情况下,局部更新页面的技术。

      2、特点

        (1)Ajax 请求的局部更新,浏览器地址栏不会发生变化;

        (2)局部更新不会舍弃原来页面的内容;

    二、Ajax XHR

      1、XHR 创建对象:XMLHttpRequest 是 Ajax 的基础。

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

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

    var xhr = new XMLHttpRequest();

        老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

    var xhr2 = new ActiveXObject("Microsoft.XMLHTTP");
    

         兼容性处理:

    1 var xmlhttp;
    2 if (window.XMLHttpRequest)
    3   {// code for IE7+, Firefox, Chrome, Opera, Safari
    4   xmlhttp=new XMLHttpRequest();
    5   }
    6 else
    7   {// code for IE6, IE5
    8   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    9   }

      2、XHR 请求:XMLHttpRequest 对象用于和服务器交换数据

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

    open(method,url,async) :  规定请求的类型,URL 以及是否异步处理请求

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

    send(String):                     将请求发送到服务器,String:仅用于 POST 请求

        (1)请求使用 GET 还是 POST?

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

            然而,在下面几种情况下,使用 POST 请求:

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

        (2)使用 POST 方式,发送 表单数据

            使用 POST 发送表单数据,使用 setRequestHeader() 来添加 HTTP 头,然后在 send() 方法中规定发送的数据

             方法:

    setRequestHeader(header,value)         向请求添加 HTTP 头,header: 规定头的名称;value:规定头的值

            Demo:

    1 xmlhttp.open("POST","ajax_test.do",true);
    2 xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    3 xmlhttp.send("fname=Bill&lname=Gates");

      3、XHR 响应:服务器响应

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

        属性:

    responseText         获取字符串像是的响应数据

    responseXML        获取 XML 形式的响应数据

      4、XHR - onreadystatechange 事件

        XMLHttpRequest 对象的三个重要的属性:

    onreadystatechange                存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数

    status:          200:“OK”;404:未找到页面

    readyState         存有 XMLHttpRequest 的状态,从0到4发送变化:

                •   0:请求未初始化;
                •   1:服务器连接已建立;
                •   2:请求已接收;
                •   3:请求处理中;
                •   4:请求已完成,且响应已就绪

        当请求被发送到服务器时,需要执行一些基于响应的任务,每当 readyState 改变时,就会触发 onreadystatechange 事件。

        readyState 属性存有 XMLHttpRequest 的状态信息。

        在 onreadystatechange 事件中,规定当服务器响应已做好被处理的准备时所执行的任务,当 readyState 等于4且状态为200,表示响应已就绪。

    三、案例

     1 script type="text/javascript">
     2         // 使用 javaScript 语言发起 Ajax 请求, 访问服务器 AjaxServlet 中 javaScriptAjax
     3         function ajaxRequest() {
     4             // 1、 我们首先要创建 XMLHttpRequest
     5             var xmlhttprequest = new XMLHttpRequest();
     6             // 2、 调用 open 方法设置请求参数
     7             xmlhttprequest.open("GET","http://localhost:8080/book/ajaxServlet?action=javaScriptAjax",true)
     8             // 3、 在 send 方法前绑定 onreadystatechange 事件, 处理请求完成后的操作。
     9             xmlhttprequest.onreadystatechange = function(){
    10                 if (xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200) {
    11                     var jsonObj = JSON.parse(xmlhttprequest.responseText);
    12                     // 把响应的数据显示在页面上
    13                     document.getElementById("div01").innerHTML = "编号: " + jsonObj.id + " , 姓名: " + jsonObj.name;
    14                 }
    15             }
    16             // 4、 调用 send 方法发送请求
    17             xmlhttprequest.send();
    18         }
    19 
    20     </script>
  • 相关阅读:
    python 变量作用域
    python 函数与模块
    python 程序控制结构
    python zip() map() filter()
    python 迭代和列表解析
    python 字典视图
    Matlab程序设计
    Matlab 基本绘图练习 包含极坐标
    Matlab 软件绘图
    Pandas 控制输出格式和精度
  • 原文地址:https://www.cnblogs.com/niujifei/p/12493521.html
Copyright © 2011-2022 走看看