簡體   English   中英

如何從客戶端JavaScript調用Web服務?

[英]How to call a webservice from client side JavaScript?

我想呼叫一個URL可供我使用的Web服務。 我只想調用它,然后使用javascript Ajax取回結果。 例如:如果某些網絡服務如兩個數字的加法免費提供,而我想在我的應用程序中使用它,該如何開始? 我剛剛實現了以下代碼(不知道它是否正確):

function webServiceCallResult(){    
    var xmlHttpReq = getXMLHttpRequest();
      if(xmlHttpReq == null){
        alert('Exception occurred');
        return false;
    }    
    var strURL = "http://www.androidpeople.com/wp-content/uploads/2010/06/example.xml";
    //var strURL = 'http://w3schools.com/dom/note.xml';
    if(xmlHttpReq.readyState == 0){
        xmlHttpReq.open('GET', strURL, true);
        xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlHttpReq.onreadystatechange = function() {
            if (xmlHttpReq.readyState == 4) {
                var resultString = xmlHttpReq.responseXML;              
                document.getElementById('webserviceresponsetext').value = resultString.getElementsByTagName("website")[0].childNodes[0].nodeValue;  
            }
        }
        xmlHttpReq.send();
    }
}

這在IE中工作正常,但在FF,Opera等中給出錯誤

XML parsing error,no element found Location: moz-nullprincipal:{ce91453b-f84c-4ce8-b02c-b999ef9f013a} Line Number 1, Column 1

甚至可以在不使用SOAP服務請求的情況下調用Web服務? 謝謝..

除非您想處理瀏覽器特定的交叉兼容性問題,否則應該使用庫來處理Ajax請求。

我還看到您正在向其他服務器發出Ajax請求。 不幸的是,相同的原始策略阻止了跨域XHR,但是使用JSONP可以解決此問題。

我建議將JSON的jQuery Ajax方法與JSONP結合使用,請在此處閱讀有關此內容的一些文章: http : //remysharp.com/2007/10/08/what-is-jsonp/
http://www.giantflyingsaucer.com/blog/?p=2682

AFAIK相同的來源策略可防止跨域XHR。 您必須在服務器端托管與遠程端點對話的服務。

您是從同一個域觸發請求嗎?

Firefox不允許您使用XMLHttpRequest訪問其他域。 請參閱下面的鏈接。

http://www.captain.at/howto-ajax-permission-denied-xmlhttprequest.php

您只能從http://www.androidpeople.com/下的頁面調用請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM