• ajax


    通过使用 XMLHttpRequest 对象,web 开发者可以做到在页面已加载后从服务器更新页面!
    在 2005 年 AJAX 被 Google 推广开来(Google Suggest)。
    Google 建议使用 XMLHttpRequest 对象来创建一种动态性极强的 web 界面:当您开始在 Google 的搜索框中输入查询时,JavaScript 会向某个服务器发出这些字词,然后服务器会返回一系列的搜索建议。
    XMLHttpRequest 对象得到下列浏览器的支持:Internet Explorer 5.0+、Safari 1.2、Mozilla 1.0 / Firefox、Opera 8+ 以及 Netscape 7。
    AJAX Http 请求
    Previous PageNext Page
    AJAX 使用 Http 请求 在传统的 JavaScript 编程中,假如您希望从服务器上的文件或数据库中得到任何的信息,或者向服务器发送信息的话,就必须利用一个 HTML 表单向服务器 GET 或 POST 数据。而用户则需要单击“提交”按钮来发送/获取信息,等待服务器的响应,然后一张新的页面会加载结果。
    由于每当用户提交输入后服务器都会返回一张新的页面,传统的 web 应用程序变得运行缓慢,且越来越不友好。
    通过利用 AJAX,您的 JavaScript 会通过 JavaScript 的XMLHttpRequest对象,直接与服务器来通信。
    通过使用 HTTP 请求,web 页可向服务器进行请求,并得到来自服务器的响应,而不加载页面。用户可以停留在同一个页面,他或她不会注意到脚本在后台请求过页面,或向服务器发送过数据。
    您的第一个 AJAX 应用程序
    为了让您理解 AJAX 的工作原理,我们将创建一个小型的 AJAX 应用程序。
    首先,我们需要一个带有两个文本框的 HTML 表单:用户名和时间。用户名文本框由用户填写,而时间文本框使用 AJAX 进行填写。
    此 HTML 文件名为 "testAjax.htm"(请注意这个 HTML 表单没有提交按钮!):
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
    <body>
    <formname="myForm">
    用户:<inputtype="text"name="username"/>
    时间:<inputtype="text"name="time"/>
    </form>
    </body>
    </html>
    我们将在下一节解释 AJAX 的基本原理。
    AJAX 浏览器支持
    Previous PageNext Page
    AJAX - 浏览器支持 AJAX 的要点是 XMLHttpRequest 对象。
    不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的。
    IE 浏览器使用ActiveXObject,而其他的浏览器使用名为XMLHttpRequest的 JavaScript 内建对象。
    如需针对不同的浏览器来创建此对象,我们要使用一条 "try and catch" 语句。您可以在我们的 JavaScript 教程中阅读更多有关try 和 catch 语句的内容。
    让我们用这段创建 XMLHttpRequest 对象的 JavaScript 来更新一下我们的 "testAjax.htm" 文件:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <html>
    <body>
    <scripttype="text/javascript">
    functionajaxFunction(){
    varxmlHttp;
    try{//Firefox,Opera8.0+,Safari
    xmlHttp=newXMLHttpRequest();
    }catch(e){//InternetExplorer
    try{
    xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
    try{
    xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
    }catch(e){
    alert("您的浏览器不支持AJAX!");
    returnfalse;
    }
    }
    }
    }
    </script>
    <formname="myForm">
    用户:<inputtype="text"name="username"/>
    时间:<inputtype="text"name="time"/>
    </form>
    </body>
    </html>
    例子解释:
    首先声明一个保存 XMLHttpRequest 对象的 xmlHttp 变量。
    然后使用 XMLHttp=new XMLHttpRequest() 来创建此对象。这条语句针对 Firefox、Opera 以及 Safari 浏览器。假如失败,则尝试针对 Internet Explorer 6.0+ 的 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"),假如也不成功,则尝试针对 Internet Explorer 5.5+ 的 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")。
    假如这三种方法都不起作用,那么这个用户所使用的浏览器已经太过时了,他或她会看到一个声明此浏览器不支持 AJAX 的提示。
    注释:上面这些浏览器定制的代码很长,也很复杂。不过,每当您希望创建 XMLHttpRequest 对象时,这些代码就能派上用场,因此您可以在任何需要使用的时间拷贝粘贴这些代码。上面这些代码兼容所有的主流浏览器:Internet Explorer、Opera、Firefox 以及 Safari。
    下一节为您展示如何使用 XMLHttpRequest 对象与服务器进行通信。
    AJAX - XMLHttpRequest 对象
    Previous PageNext Page
    AJAX - 更多有关 XMLHttpRequest 对象的知识
    在向服务器发送数据之前,我们有必要解释一下 XMLHttpRequest 对象的三个重要的属性。
    onreadystatechange 属性
    onreadystatechange 属性存有处理服务器响应的函数。下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行设置:
    1
    2
    3
    xmlHttp.onreadystatechange=function(){
    //我们需要在这里写一些代码
    }
    readyState 属性
    readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。
    这是 readyState 属性可能的值:
    0
    请求未初始化(在调用 open() 之前)
    1
    请求已提出(调用 send() 之前)
    2
    请求已发送(这里通常可以从响应得到内容头部)
    3
    请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应)
    4
    请求已完成(可以访问服务器响应并使用它)
    我们要向这个 onreadystatechange 函数添加一条 If 语句,来测试我们的响应是否已完成(意味着可获得数据):
    1
    2
    3
    4
    5
    xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4){
    //从服务器的response获得数据
    }
    }
    responseText 属性
    可以通过 responseText 属性来取回由服务器返回的数据。
    在我们的代码中,我们将把时间文本框的值设置为等于 responseText:
    1
    2
    3
    4
    5
    xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4){
    document.myForm.time.value=xmlHttp.responseText;
    }
    }
    下一节,我们会介绍如何向服务器请求数据!
    AJAX - 请求服务器
    Previous PageNext Page
    AJAX - 向服务器发送一个请求
    要想把请求发送到服务器,我们就需要使用 open() 方法和 send() 方法。
    open() 方法需要三个参数。第一个参数定义发送请求所使用的方法(GET 还是 POST)。第二个参数规定服务器端脚本的 URL。第三个参数规定应当对请求进行异步地处理。
    send() 方法可将请求送往服务器。如果我们假设 HTML 文件和 ASP 文件位于相同的目录,那么代码是这样的:
    xmlHttp.open("GET","time.asp",true);xmlHttp.send(null);
    我们必须决定何时执行 AJAX 函数。当用户在用户名文本框中键入某些内容时,我们会令函数“在幕后”执行。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <html>
    <body>
    <scripttype="text/javascript">
    functionajaxFunction(){
    varxmlHttp;
    try{//Firefox,Opera8.0+,Safari
    xmlHttp=newXMLHttpRequest();
    }catch(e){//InternetExplorer
    try{
    xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
    try{
    xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
    }catch(e){
    alert("您的浏览器不支持AJAX!");
    returnfalse;
    }
    }
    }
    xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4){
    document.myForm.time.value=xmlHttp.responseText;
    }
    }
    xmlHttp.open("GET","time.asp",true);
    xmlHttp.send(null);
    }
    </script>
    <formname="myForm">
    用户:<inputtype="text"name="username"onkeyup="ajaxFunction();"/>
    时间:<inputtype="text"name="time"/>
    </form>
    </body>
    </html>
  • 相关阅读:
    MySql学习
    python学习笔记
    关于字符编码的理解
    session与cookie
    常用的表单元素
    Linq基础
    发送邮件。。
    进程与线程
    winform知识点集合
    winform基础与简单的窗体
  • 原文地址:https://www.cnblogs.com/hz0356/p/3814967.html
Copyright © 2020-2023  润新知