有沒有使用JavaScript來使用Web服務的方法?我正在尋找一種內置的方式來實現它,使用JavaScript框架不是一種選擇。使用JavaScript來使用Web服務
回答
您可以使用JavaScript本地使用XmlHttpRequest對象來使用Web服務。但是,在瀏覽器之間實例化此對象。例如,Firefox和IE 7 +可讓您將其實例化爲本機JavaScript對象,但IE6要求您將其實例化爲ActiveX控件。
因此,我建議使用抽象庫,如jQuery。如果這不是一個選項,那麼將創建抽象爲工廠方法並檢查瀏覽器版本。
要使用它來創建Web服務調用,只需實例化對象,然後調用它的open()方法。我建議這樣做是異步的,以保持UI的響應。當調用異步時,您將獲得指定的異步方法的回調,該方法將指示請求的狀態。當狀態爲4(加載)時,您可以獲取響應數據,然後對其進行處理。
如何處理數據將取決於它是什麼,如果它是JSON,那麼您可以通過JavaScript的eval()方法運行它,但這確實有一些安全隱患。如果它是XML,則可以使用XML DOM來處理它。
有關XMLHttpRequest對象的更多信息,請參閱Wikipedia。
您可以使用XMLHttpRequest對象,但由於您不想使用任何JavaScript框架,因此您必須自己封送和解組SOAP封套。
如果服務託管在您的域中,您可以創建XMLHttpRequest。如果沒有,您將會遇到跨域問題。
s/could/will /如果我沒有弄錯。 – 2008-10-16 10:45:31
是的,你說得對。任何時候跨域的東西出現,我都不確定確切的規則是什麼。我只是儘量避免這些問題;) – brien 2008-10-16 10:46:57
你是什麼意思,具體來說,「跨域問題」? – 2012-09-09 04:10:21
另外檢查XML HTTP Request關於使用XmlHttpRequest對象的一個很好的信息頁。
有一個用JavaScript編寫的小型庫,可以用作XML-SOAP客戶端。 我不知道它是否適用於所有瀏覽器,但它可能會幫助你。你可以找到它here
這工作。這是舊的(檢查Netscape),是在所有Ajax工具出來之前編寫的。你必須處理不同的瀏覽器 - 基本上,IE做到這一點,而其他人都是這樣做的。
// javascript global variables
var soapHeader = '<?xml version=\"1.0\"?>'
+ '<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"'
+ ' SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"'
+ ' xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\"'
+ ' xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"'
+ '>'
+ '<SOAP-ENV:Header/>'
+ '<SOAP-ENV:Body>';
var soapFooter = '</SOAP-ENV:Body>'
+ '</SOAP-ENV:Envelope>';
var destinationURI = '/webservices/websalm';
var actionURI = '';
function callWebService(nsCallback,ieCallback,parms) {
try
{
// Create XmlHttpRequest obj for current browser = Netscape or IE
if (navigator.userAgent.indexOf('Netscape') != -1)
{
SOAPObject = new XMLHttpRequest();
SOAPObject.onload = nsCallback;
} else { //IE
SOAPObject = new ActiveXObject('Microsoft.XMLHTTP');
SOAPObject.onreadystatechange = ieCallback;
}
SOAPObject.open('POST', destinationURI, true);
// Set 2 Request headers, based on browser
if (actionURI == '') {
SOAPObject.setRequestHeader('SOAPAction', '\"\"');
} else { SOAPObject.setRequestHeader('SOAPAction', actionURI);
}
SOAPObject.setRequestHeader('Content-Type', 'text/xml');
// Compose the Request body from input parameter + global variables
var requestBody = soapHeader + parms + soapFooter
// Send, based on browser
if (navigator.userAgent.indexOf('Netscape') != -1)
{
SOAPObject.send(new DOMParser().parseFromString(requestBody,'text/xml'));
} else {
SOAPObject.send(requestBody);
}
} catch (E)
{
alert('callWebService exception: ' + E);
}
}
- 1. 使用rails來使用web服務/ apis
- 2. 如何使用javascript來使用軸web服務?
- 3. 使用javascript調用java web服務
- 4. 使用javascript調用web服務
- 5. 使用JavaScript調用Web服務
- 6. 使用Web服務
- 7. 使用web服務
- 8. 使用Web服務?
- 9. 使用Web服務
- 10. 使用Web服務
- 11. 使用web服務
- 12. 使用Web服務
- 13. 使用Redis來擴展Web服務
- 14. 訪問各種Web服務使用Javascript
- 15. 使用JavaScript/jQuery消費JSON Web服務
- 16. 使用Javascript連接到WCF Web服務
- 17. 在Javascript中使用Web服務(WSDL)
- 18. 通參數值Web服務使用javascript
- 19. 在Javascript中使用web服務
- 20. 您使用Go for web服務使用什麼Web服務器?
- 21. 單聲道:我如何使用JavaScript和jQuery來使用Web服務?
- 22. 使用PowerShell來調用Web服務的異步Web方法
- 23. 引用Ashx Web服務 - 使用Web還是服務引用?
- 24. 獲取Web服務並使用android來使用它們?
- 25. SQL Server - 使用CLR集成來使用Web服務
- 26. 使用摘要式身份驗證來使用Web服務
- 27. 使用KSoap庫來使用.NET Web服務時出現錯誤
- 28. 使用Visual Studio 10和C來使用Web服務#
- 29. 使用Perl和SOAP Lite來使用.Net Web服務
- 30. 如何使用Java來使用SOAP Web服務?
如果SOAP信封是SOAP Web服務,則只需要擔心SOAP信封。可以調用一些寧靜的Web服務,並且在沒有任何預處理的情況下讀取結果。 – brien 2008-10-16 10:46:12