分享

简单ajax实例,最具兼容性,简单介绍ajax运行模式,根据此自认为最好的模式可以设计出很好的应用。

 krrish 2010-09-14
简单ajax实例,最具兼容性,简单介绍ajax运行模式,根据此自认为最好的模式可以设计出很好的应用。

asycn.txt文档

Hello client!





async.html文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www./TR/xhtml11/DTD/xhtml11.dtd">

<html>

  <head>

    <title>AJAX Foundations: Using XMLHttpRequest</title>

    <script type="text/javascript" src="async.js"></script>

  </head>

  <body onload="process()">

    Hello, server!



    <br/>

    <div id="myDivElement" />

  </body>

</html>





async.js文件

// holds an instance of XMLHttpRequest

//建立一个XmlHttpRequestObject对象实例

var xmlHttp = createXmlHttpRequestObject();



// creates an XMLHttpRequest instance

//建立XmlHttpRequestObject对象

function createXmlHttpRequestObject()

{

  // will store the reference to the XMLHttpRequest object

  //用于存储XmlHttpRequest对象的引用

  var xmlHttp;

  // this should work for all browsers except IE6 and older

  //创建除了ie6 或者其更早版本外的所有浏览器

  //(用try catch结构是我见过最好的最具兼容性的创建XMLHttpRequest对象实例的方法)

  try

  {

    // try to create XMLHttpRequest object

    xmlHttp = new XMLHttpRequest();

  }

  catch(e)

  {

    // assume IE6 or older

         //假设是ie6 或其更早版本

    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",

                                    "MSXML2.XMLHTTP.5.0",

                                    "MSXML2.XMLHTTP.4.0",

                                    "MSXML2.XMLHTTP.3.0",

                                    "MSXML2.XMLHTTP",

                                    "Microsoft.XMLHTTP");

    // try every prog id until one works

         //顺序尝试创建每一个对象,直到成功为止

    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)

    {

      try

      {

        // try to create XMLHttpRequest object

                   //尝试创建XMLHttpRequest对象

        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);

      }

      catch (e) {}

    }

  }

  // return the created object or display an error message

  //返回已经创建的对象,或显示错误信息

  //实际应用中这里最好不要把错误信息发送到客户端

  if (!xmlHttp)

    alert("Error creating the XMLHttpRequest object.");

  else

    return xmlHttp;

}





// called to read a file from the server

// 创建process()函数,读取服务器上的回显文本

function process()

{

  // only continue if xmlHttp isn't void

  // 当 xmlHttp不为空时继续

  if (xmlHttp)

  {

    // try to connect to the server

         //尝试连接服务器

    try

    {

      // initiate reading the async.txt file from the server

           //开始读取服务器上的async.txt文件,也可以是http://www./index.php?app=ajax&act=response

      xmlHttp.open("GET", "async.txt", true);                                              //在这里只是设置,发送。设置get方法提交的request参数,像是在地址栏中输入http://async.txt,调用方法用异步(或者解释成设置异步读取的文件async.txt)

      xmlHttp.onreadystatechange = handleRequestStateChange; //设置XMLHttpRequest处理状态变化的函数。

      xmlHttp.send(null);                                                                                     //把以上设置发送到服务器,get方法直接在以上的open方法设置提交参数,如果为post,设置send(app=ajax&act=response)

    }

    // display the error in case of failure

         //如果出现异常,显示错误信息

    catch (e)



    {

      alert("Can't connect to server:\n" + e.toString());

    }

  }

}



// function that handles the HTTP response

//处理http响应的函数

function handleRequestStateChange()

{

  // obtain a reference to the <div> element on the page

  //获取页面上<div>元素的id

  myDiv = document.getElementById("myDivElement");

  // display the status of the request

  //依次显示请求状态信息

  if (xmlHttp.readyState == 1)

  {

    myDiv.innerHTML += "Request status: 1 (loading) <br/>";

  }

  else if (xmlHttp.readyState == 2)

  {

    myDiv.innerHTML += "Request status: 2 (loaded) <br/>";

  }

  else if (xmlHttp.readyState == 3)

  {

    myDiv.innerHTML += "Request status: 3 (interactive) <br/>";

  }

  // when readyState is 4, we also read the server response

  //当转换到状态4时,读取服务器的响应

  else if (xmlHttp.readyState == 4)

  {

    // continue only if HTTP status is "OK"

         //       xmlHttp.status为200时表示处理成功

    if (xmlHttp.status == 200)

    {

      try

      {

        // read the message from the server

                   //读取服务器信息

        response = xmlHttp.responseText;

        // display the message

                   //显示信息到指定id

        myDiv.innerHTML +=

                      "Request status: 4 (complete). Server said said: <br/>";

        myDiv.innerHTML += response;

      }

      catch(e)

      {

        // display error message

        alert("Error reading the response: " + e.toString());

      }

    }

    else

    {

      // display status message

      alert("There was a problem retrieving the data:\n" +

            xmlHttp.statusText);

    }

  }

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约