亮 さんのプロフィール懒人窝フォトブログリスト ツール ヘルプ
    4月25日

    AJAX学习笔记

    AJAX是Asynchronous JavaScript and XML的缩写,中文翻译过来就是异步JavaScript和XML。
    它的好处在于,浏览器向服务端发出请求后,用户可以继续和浏览器进行交互,而不需要等待整个页面的刷新。
     
    客户端主要由JavaScript编写,它通过XMLHttpRequest这个对象向服务器发送请求。
     
    XMLHttpRequest常用函数:
    open(method , url , asynchronous flag);
    send( content );
     
    XMLHttpRequest常用属性:
    onreadystatechange //类似于监听器,一旦状态改变,这个属性中记录的响应函数开始工作。一般就是收到服务器端的响应后的处理函数
    readyState //0~4的五个值,4的时候是完成了向服务器发请求并且服务器也返回的这个过程
    responseXML //服务器端返回的XML格式数据
    responseText //服务器端返回的文本格式数据
    status //服务器端响应的状态码,200正常
     
    其它常用函数:
    getElementsByTagName(“type”); //获得XML中具有type标签的node
    getElementById("id"); //获得页面中被命名为id的元素,如table,text area等,甚至就是一行字
     
    浏览器兼容性问题的解决:
     if (window.XMLHttpRequest) //Mozilla等
     { 
      xmlObj = new XMLHttpRequest();
     }
     else if (window.ActiveXObject) //IE
     {
      xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
     }
     else
     {
      return;
     }
    if(xmlObj)
    {
    ......
    }
     
    简单的模版:(例子)
    <script language="javascript">
    function load(resource)
    {
     if (window.XMLHttpRequest)
     { 
      xmlObj = new XMLHttpRequest();
     }
     else if (window.ActiveXObject)
     {
      xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
     }
     else
     {
      return;
     }
     xmlObj.onreadystatechange = handleResponse;
     xmlObj.open("GET",resource,true);
     xmlObj.send("");
    }
    function handleResponse()
    {
     if (xmlObj.readyState == 4)
     {
      //xmlObj loaded
      if (xmlObj.status == 200)
      {
       var datas = xmlObj.responseXML.getElementsByTagName("data")[0];
       var obj = document.getElementById("data");
       //obj.innerText = datas[0];
       obj.innerText = datas.lastChild.data;
      }
     }
    }
    </script>
     
     

    コメント (3 件)

    しばらくお待ちください。
    入力されたコメントは長すぎます。短くしてください。
    何も入力されていません。もう一度やり直してください。
    現在、コメントを追加できません。後でもう一度やり直してください。
    コメントと書くには、保護者 (ほごしゃ) の方の許可 (きょか) をもらってください。許可をリクエストする
    保護者 (ほごしゃ) の方が、あなたがコメントを書けないようにしています。
    現在、コメントを削除できません。後でもう一度やり直してください。
    1 日に投稿できるコメントの最大数を超えました。24 時間経過してから、もう一度やり直してください。
    あなたが他のユーザーに対して迷惑行為を行っている可能性があると確認されたため、お使いのアカウントによるコメントの投稿を無効にしています。誤って無効にされたと思われる場合は、Windows Live のサポートにお問い合わせください。
    コメントを投稿する前に、以下のセキュリティ チェックを完了してください。
    セキュリティ チェックに入力する文字は、画像に表示されている文字または音声で流れた文字と一致していなければいけません。

    コメントを投稿するには、お使いの Windows Live ID でサインインしてください (Hotmail、Messenger、または Xbox LIVE を既に使用している場合は、そのアカウントが Windows Live ID です)。サインイン


    Windows Live ID をお持ちでない場合は、アカウントを新規登録してください。

    黄 亮さんの投稿:
    初步的开发框架:
    <script language="javascript">
    var http_request = false;
    function send_request(url) {//初始化、指定处理函数、发送请求的函数
     http_request = false;
     //开始初始化XMLHttpRequest 对象
     if(window.XMLHttpRequest) { //Mozilla 浏览器
      http_request = new XMLHttpRequest();
      if (http_request.overrideMimeType) {//设置MiME 类别
       http_request.overrideMimeType("text/xml");
      }
     }
     else if (window.ActiveXObject) { // IE 浏览器
      try {
       http_request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
       try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (e) {}
      }
     }
     if (!http_request) { // 异常,创建对象实例失败
      window.alert("不能创建XMLHttpRequest 对象实例.");
      return false;
     }
     http_request.onreadystatechange = processRequest;
     // 确定发送请求的方式和URL 以及是否同步执行下段代码
     http_request.open("GET", url, true);
     http_request.send(null);
    }
    // 处理返回信息的函数
    function processRequest() {
     if (http_request.readyState == 4) { // 判断对象状态
      if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
       alert(http_request.responseText);
      } else { //页面不正常
       alert("您所请求的页面有异常。");
      }
     }
    }
    </script>
    4 月 25 日
    黄 亮さんの投稿:
    应该是比较完备的一种检查浏览器兼容性的代码了……
    <script language="javascript" type="text/javascript">
    var request = false;
    try {
      request = new XMLHttpRequest();
    } catch (trymicrosoft) {
      try {
        request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (othermicrosoft) {
        try {
          request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (failed) {
          request = false;
        }
      }
    }

    if (!request)
      alert("Error initializing XMLHttpRequest!");
    </script>
    4 月 25 日
    黄 亮さんの投稿:
    在检查浏览器兼容性的时候,对于M$还有这样一种检查方式
    var xmlHttp = false;
    try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
        xmlHttp = false;
      }
    }
    4 月 25 日

    トラックバック

    この記事のトラックバックの URL は次のとおりです。
    http://lancerhuang.spaces.live.com/blog/cns!AD62CFA7868DC21!392.trak
    この記事を参照しているブログ
    • なし