如何从客户端JavaScript调用Web服务?

时间:2011-12-13 10:21:24

标签: javascript ajax web-services

我想调用一个可以使用哪个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服务? 感谢..

3 个答案:

答案 0 :(得分:1)

除非你想处理浏览器特定的交叉兼容性内容,否则你应该使用库来处理Ajax请求。

此外,我看到您正在向其他服务器发出Ajax请求。不幸的是,相同的原始策略会阻止跨域XHR,但是通过使用JSONP可以解决这个问题。

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

答案 1 :(得分:0)

AFAIK相同的原始政策可防止跨域XHR。您必须在服务器端托管与远程端点通信的服务。

答案 2 :(得分:0)

您是否从同一个域发出请求?

Firefox不允许您使用XMLHttpRequest访问其他域。请参阅以下链接。

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

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