zoukankan      html  css  js  c++  java
  • ajax的简单应用之快速入门

     

    Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。对于Ajax,最核心的一个对象是XMLHttpRequest,所有的Ajax操作都离不开对这个对象的操作。

    首先我们来了解怎么在javascript中创建这个对象:

    varxmlHttp=newXMLHttpRequest();
    这行简单的代码在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 浏览器中,创建了XMLHttpRequest对象。但是对于市场占有率达到70%的IE来说,这种方法是不行的,而不同的IE版本还有不同的创建方法,所以我们需要在IE下面使用下面两种创建对象的办法:

    try{
    xmlHttp=newActiveXObject("Msxml2.XMLHTTP");//针对较新的浏览器
    }catch(err){
    try{
    xmlHttp=newActiveXObject("Microsoft.XMLHTTP");//针对较老的浏览器
    }catch(err2){
    xmlHttp=false;
    }
    }
    即使这样,我们也无法预料有些浏览器可能无法创建这个对象,所以在创建不成功的情况下,我们还要加上一句:

    if(!xmlHttp){
    alert("无法创建 XMLHttpRequest 对象!");
    }
    结合起来就是:

    varxmlHttp=false;
    try{
    xmlHttp=newXMLHttpRequest();
    }catch(trymicrosoft){
    try{
    xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
    }catch(othermicrosoft){
    try{
    xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
    }catch(failed){
    xmlHttp=false;
    }
    }
    }
    if(!xmlHttp){
    alert("无法创建 XMLHttpRequest 对象!");
    }
    然后,让我们建立一个函数getInfo(),打开异步请求:

    functiongetInfo(){
    varnum=document.getElementById("num").value;//获得表单的数据
    varurl="/ajax/1.php?n="+escape(num);
    xmlHttp.open("GET",url,true);//这里的true代表是异步请求
    }
    一旦用open()配置好之后,就可以发送请求了。虽然可以使用send()发送数据,但也能通过 URL 本身发送数据。事实上,在大部分GET请求中,用 URL 发送数据要容易得多,所以这里用null作为send()的参数就可以了。url地址里面的php文件是被请求来处理所需要数据的php文件,就像我们平时用PHP的时候一样,后面的参数可以加多个,并用&分隔开来。
    xmlHttp.send(null);
    在发送了数据之后,我们需要用回调方法来获得服务器的状态,所以就用到了onreadystatechange属性。
    xmlHttp.onreadystatechange=updatePage;
    此语句已经要放在send()语句前面,这样才会有效,后面的updatePage是处理返回信息的一个函数。完整的getInfo()如下:
    functiongetInfo(){
    varnum=document.getElementById("num").value;//获得表单的数据
    varurl="/ajax/1.php?n="+escape(num);
    xmlHttp.open("GET",url,true);//这里的true代表是异步请求
    xmlHttp.onreadystatechange=updatePage;
    xmlHttp.send(null);
    }
    我们还需要在html里面来触发这个函数:
    <inputname="num"id="num"onblur="getInfo()"type="text"/>
    下面我们需要来编写updatePage()这个函数:

    functionupdatePage(){
    if(xmlhttp.readyState==4){
    varresponse=xmlhttp.responseText;
    document.getElementById("city").value=response;
    }
    }
    上面这段代码里面的readyState是服务器返回的一个状态,4这个状态表示请求已经发送,并处理完毕。responseText是获得服务器返回的信息,然后通过javascript赋给ID为city的表单。
    到此,一个简单的Ajax程序就完成了,完整的javascript代码如下:

    varxmlHttp=false;
    try{
    xmlHttp=newXMLHttpRequest();
    }catch(trymicrosoft){
    try{
    xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
    }catch(othermicrosoft){
    try{
    xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
    }catch(failed){
    xmlHttp=false;
    }
    }
    }
    if(!xmlHttp){
    alert("无法创建 XMLHttpRequest 对象!");
    }

    functiongetInfo(){
    varnum=document.getElementById("num").value;//获得表单的数据
    varurl="/ajax/1.php?n="+escape(num);
    xmlHttp.open("GET",url,true);//这里的true代表是异步请求
    xmlHttp.onreadystatechange=updatePage;
    xmlHttp.send(null);
    }

    functionupdatePage(){
    if(xmlhttp.readyState==4){
    varresponse=xmlhttp.responseText;
    document.getElementById("city").value=response;
    }
    }
    这里还缺一个php文件,由于处理的方式不一样,写法也不一样,而且这不是Ajax的主要部分,所以这里就不放代码了。只要记住php是输出并返回所需要的数据就可以了

  • 相关阅读:
    HDU 5583 Kingdom of Black and White 水题
    HDU 5578 Friendship of Frog 水题
    Codeforces Round #190 (Div. 2) E. Ciel the Commander 点分治
    hdu 5594 ZYB's Prime 最大流
    hdu 5593 ZYB's Tree 树形dp
    hdu 5592 ZYB's Game 树状数组
    hdu 5591 ZYB's Game 博弈论
    HDU 5590 ZYB's Biology 水题
    cdoj 1256 昊昊爱运动 预处理/前缀和
    cdoj 1255 斓少摘苹果 贪心
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/2042992.html
Copyright © 2011-2022 走看看