DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> AJAX及使用E4X編寫Web服務腳本(3)
AJAX及使用E4X編寫Web服務腳本(3)
編輯:AJAX詳解     
我們設置了兩個 HTTP 頭信息——SOAPAction 和 Content-Type——然後使用 xmlhttp.send(XML.toString()) 將 SOAP 信封消息發送出去。

如果該調用行為是異步的,那麼在調用從該響應創建的 XML 回調函數之前,它需要等待,直到 readyState 為 4(全部完成)。

因此使用該操作的代碼如下所示:

   var url = document.getElementById("url").value;

   var callback = function(resp) {

alert(resp..*::getQuoteReturn);

}

   execService(url, envelope, callback);

在我們的樣例中,我們使用異步模型。典型的 Web 浏覽器在與服務器通話時並不阻塞,並且我們也不希望它那樣。舉例來說,如果我們阻塞了浏覽器,那麼浏覽器的窗口可能最終表現為“不響應”狀態,從而促使用戶結束它。

resp..*::getQuoteReturn

如果您是 E4X 新手,那麼需要再次理解該語法。.. 意味著從樹中搜索命名的元素。*:: 意味著任意的命名空間,因此該數值將是在響應 SOAP 封裝的任意命名空間中被稱為 getQuoteReturn 元素的數值。 

實際的樣本代碼 stockclIEnt.Html 同樣也顯示了該請求和響應 SOAP 封裝。測試該樣本
該 stockclIEnt.html 看上去類似一個傳統的使用提交按鈕的 Web 頁面,盡管它事實上並不是(浏覽器一直在查看該頁面,從未更改)。我們創建了該文件,以便您能理解交互行為。但是,真正的 AJAX 版本的頁面要美觀很多。此 stockclIEntAJax.Html 沒有按鈕。隨著您鍵入操作的進行,它會自動地更新股票價格。



雖然該頁面沒有按鈕,但是只要您停止鍵入操作,它就能自動地做出請求(在做出請求之前,它需要等待 0.6 秒鐘,以便在您停止的時候它能夠“感應”到)。

生成來自 Rhino 的 Web 服務請求

 Rhino 並不支持 XMLHTTPRequest 對象,但是這個問題您不必擔心。因為 Rhino 運行在 Java 環境中,您可以使用 Java 功能來生成 Web 服務請求 。為演示該操作,我們編寫了一個 XMLHttpRequest 對象的簡單 Java 實現。Rhino 允許 Java 程序員發布 Java 語言來擴展它們的 JavaScript 環境。為了使用 Rhino shell 中的 XMLHttpRequest 對象,您只需確保 e4xutils.jar 在自己的類路徑中,然後您就可以使用 shell 命令,defineClass,將其添加到自己的環境中:

>set classpath=.\JS.jar;.\xbean.jar;.\e4xutils.jar;.

>java org.mozilla.Javascript.tools.shell.Main

Rhino 1.6 release 1 2004 11 30H

JS> defineClass('xmlhttp.XMLHttpRequest');

下面有個很簡單的腳本程序對其進行測試:

>test.JS

defineClass("xmlhttp.XMLHttpRequest");

var xh = new XMLHttpRequest();

xh.open("GET",

"http://services.xmethods.Net/soap/urn:xmethods-delayed-quotes.wsdl",

false);

xh.send(null);

var wsdl = new XML(xh.responseText);

print(wsdl..*::address.@location);

>java org.mozilla.Javascript.tools.shell.Main test.JS

http://64.124.140.30:9090/soap

結果就是您現在可以使用您已經在 Mozilla 和 Rhino 中寫入(E4X+XMLHttpRequest)的相同的腳本程序

結束語

到目前為止,您已經看到了如何使用 E4X 和 Javascript 來初始化 Web 服務請求

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved