<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      在基于Mozilla的瀏覽器中使用XMLHttpRequest對象

      [摘要]IE通過允許開發人員在Web頁面內部使用安全的ActiveX組件擴展自身的功能。微軟在無狀態連接方面的產品是XMLHTTP組件。使用XMLHTTP組件,開發人員可以不用從當前的Web頁面導航而直接傳...

      IE通過允許開發人員在Web頁面內部使用安全的ActiveX組件擴展自身的功能。微軟在無狀態連接方面的產品是XMLHTTP組件。

      使用XMLHTTP組件,開發人員可以不用從當前的Web頁面導航而直接傳輸數據到服務器上或者從服務器取數據。這個功能是重要的,因為它幫助減少了無狀態連接的痛苦。它還可以排除下載冗余HTML的需要,從而提高進程的速度。

      Mozilla做出的回應是創建它自己的繼承XML代理類:XMLHttpRequest類。對于大多數情況,XMLHttpRequest對象的行為很像XMLHTTP組件。這就意味著你可以使用很多與XMLHTTP組件相同的幫助信息。方法和屬性類似,然而,所有的方法和屬性都是以小寫字母開頭,并且還有一些屬性不支持。

      下面是一個使用eXtensible Binding Language(XBL)將一個行為綁定到一個<INPUT>元素來更新XML數據島的簡單例子。數據被發送到服務器處理。

      xml_http.asp:

      <%@ Language=VBScript %>
      <%
      Response.Expires = -1
      If Request("action") = "update" Then
          Dim xml
          Set xml = Server.CreateObject("MSXML2.DOMDocument")
          xml.load Request
          Response.Writexml.xml
          Set xml = Nothing
          Response.End
      End If
      %>
      <html>
      <head>
      <style>
      .linkedData {
          -moz-binding: url(link_data.xml#link);
      }
      </style>
      <script language="JavaScript">
      <!--
      function test() {
          var xml = document.getElementById("xmlData");
          if (xml != null) {
              varxmlhttp = new XMLHttpRequest();
              xmlhttp.open("POST", "xml_http.asp?action=update", false);
              xmlhttp.send(xml.innerHTML);
              alert(xmlhttp.responseText);
          }
      }
      //-->
      </script>
      </head>
      <body>

      <xml id="xmlData" name="xmlData" style="visibility:hidden;">
          <root>
              <link_data/>
          </root>
      </xml>

      <form id="thisForm" name="thisForm">

      <input type="text" class="linkedData" name="txtLink" id="txtLink" size="25">
      <br>
      <input type="button" value="Test" onclick="test()">

      </form>

      </body>
      </html>

      link_data.xml:

      <?xml version="1.0"?>
      <xbl:bindingsxmlns:xbl="http://www.mozilla.org/xbl">
          <xbl:binding id="link">
              <xbl:handlers>
                  <xbl:handler event="change">
                      var xml = document.getElementById("xmlData");
                      var root = xml.childNodes[1];
                      varlink_data = root.childNodes[1];
                      link_data.childNodes[0].nodeValue = event.originalTarget.value;
                  </xbl:handler>
              </xbl:handlers>
          </xbl:binding>
      </xbl:bindings>
       


      xml_http.asp文件創建一個XML數據島,創建的數據島有一個重要節點:link_data。而且,這個HTML的表現會創建一個文本框和一個用于創建發送XML數據給服務器的事件的按鈕。

      IE允許你嵌入XML數據島并使用那個數據島將綁定HTML元素到底層的數據。Mozilla靠XBL為每個元素創建行為。使用XBL,你可以為<INPUT>元素創建一個行為,所以在onChange事件發生時,“bound”XML節點就能夠被更新!發inkedData”樣式類通知Mozilla文件link_data.xml將要被用來創建綁定。這個類是在<INPUT TYPE=”text” … >元素中使用的。

      如果你分析link_data.xml的代碼,你會注意到onchange事件處理程序只是簡單地獲取XML數據島的link_data節點然后更新text節點的值。對于這個解決方案這是一個非常簡單的方法;它只在文本框中的值有改動之后才會更新數據。這不屬于two-way綁定機制,因為如果節點的值改變了,其改變不會反映到文本框。

      當用戶點擊Test按鈕的時候,奇怪的事情發生了。一個新的XMLHttpRequest對象被創建用來向服務器改善XML數據。然后,就像XMLHTTP組件在IE中的工作方式一樣,你使用open()方法打開遠程頁面。在這個例子中,我添加了一個查詢字符串到xml_http.asp頁面中,所以我可以使用同一個頁面處理XML傳輸。使用send()方法,我傳遞xmlData數據島的innerHTML。(在IE中,這與指定xmlData數據島的XML屬性一樣)。

      在xml_http.asp頁面被裝載時,它檢查“action”參數是否傳遞給頁面,并且那個參數是否等于“update”。如果是——就是在我們發出XMLHttpRequest請求的時候——它創建一個DOMDocument組件,從Request對象裝載XML,然后返回DOMDocument的xml。Request對象暴露出IStream接口,允許DOMDocument直接從Request對象裝載xml。(在另外一種語言中,你可以使用從HTTP請求中發送過來的POST數據。)

      這是一個非常簡單的例子,說明了Mozilla的XML能力。在Mozilla中操作XML的其中一個缺點就是文檔不怎么樣。不過上面已經提到過,對于絕大多數部分,你可以使用針對微軟的XMLHTTP組件的文檔。

       




      日韩精品一区二区三区高清