如何从客户端JavaScript调用web服务

How to call a webservice from client side JavaScript?

本文关键字:调用 web 服务 JavaScript 客户端      更新时间:2023-09-26

我想调用一个URL对我可用的web服务。我想调用它并使用javascript Ajax检索结果。例如:如果一些web服务,如两个数字的加法是免费提供的,我想在我的应用程序中使用它,我应该如何开始?我刚刚实现了以下代码(不知道它是对还是错):

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。

我建议使用jQuery的Ajax方法与JSONP,阅读一些关于这方面的文章在这里:http://remysharp.com/2007/10/08/what-is-jsonp/
http://www.giantflyingsaucer.com/blog/?p=2682

同源策略防止跨域XHR。您必须在服务器端托管一个与远程端点通信的服务。

是否从同一域发出请求?

Firefox不允许您使用XMLHttpRequest访问不同的域。请看下面的链接。

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

您应该只从http://www.androidpeople.com/下的页面调用请求