2013-04-09 86 views
-3

访问HTML页面中的Web服务,我有一个静态网站,我想访问该网站中的一个Web服务。如何在html页面中访问web服务?静态网站?

+0

什么类型的Web服务?休息?肥皂? HTML页面是否在web服务的相同域(相同的服务器/地址)中? – acdcjunior 2013-04-16 02:25:19

+1

入住这里 http://stackoverflow.com/questions/2741435/calling-a-net-webservice-from-a-plain-html-site-using-jquery 同样的问题早已见怪不怪回答 – Sweety 2013-04-17 04:36:50

+0

你可能进一步阐述你的使用案例 – elsadek 2013-04-18 13:15:54

回答

1

请javascript,这里是示例代码

<html> 
    <head> 
    <title>Hello World</title> 
    <script language="JavaScript"> 
    function InitializeService(){ 
     service.useService(http://localhost/MyWebService.asmx?wsdl, "HelloWorldService"); 
     service.HelloWorldService.callService("HelloWorld"); 
    } 
    function ShowResult(){ 
     alert(event.result.value); 
    } 
    </script> 
    </head> 
    <body onload="InitializeService()" id="service" 
     onresult="ShowResult()"> </body> 
</html> 
+0

需要jQuery来完成这项工作?提及 – tgkprog 2013-04-18 19:46:59

+0

服务不是一个标准的JavaScript对象,你可能需要你的URL之间的字符串分隔符。 – EmeraldCoder 2013-04-19 01:56:16

0

您还可以使用jQuery,但是您访问必须驻留在同一个域中即拍即request.It必须遵守的jQuery脚本的Web服务相同的域名政策。

$(document).ready(function() { 
    $('#Save').click(function() { 
     $.ajax({ 
      url: "mydomain.com/test/ws/getData", 
      type: "POST", 
      dataType: "json", 
      data: "{BizName:'" + BizName + "'}", 
      contentType: "application/json; charset=utf-8", 
      success: function(msg) { 
       $('#status').html('Id: '+msg['d']['Id']); 
      }, 
      error: function(e) { 
       $('#status').innerHTML = "Unavailable"; 
      } 
     }); 
    }); 
); 
0

它很可能的,但如果你正在运行一个静态的网站,你会需要一些jQuery的,JavaScript中,阿贾克斯它

4

我假设你要访问的Web服务是不在同一个域和你不能在服务器端建立代理。如果这两个假设都是正确的,那么由于浏览器中的原始策略相同,不能使用“普通”ajax。您最好的选择可能是JSONP,因为它受到许多Web服务的支持。

我会给你一个简单的例子。要检索下与JavaScript中使用jQuery的openkeyval存储Web服务的关键“的myKey”存储的值,调用

$.ajax({ 
    url: "http://api.openkeyval.org/mykey", 
    dataType: "jsonp", 
    success: function(data){ 
     // do something with data 
    } 
}); 

和存储的值,调用

$.ajax({ 
    url: "http://api.openkeyval.org/store/", 
    data: "mykey=myvalue", 
    dataType: "jsonp", 
    success: function(data){ 
     // your value has been succesfully saved 
    } 
}); 

请注意,现在很多人认为Cross-origin resource sharing (CORS)是JSONP的更好替代方案。但是,为您开始可能有点困难。

1

我同意benedolph提供的答案,但认为我可能会添加违背他的假设的想法。

这些步骤可能比您想要的更复杂,但实际上并不十分复杂 - 如果不是免费的话,价格便宜。但至少预留一整天...

1)如果你没有,获得一个域代理多个服务。无论是免费还是每月5美元(取决于您的需求)。

2)写你的代理。这可以用你选择的语言来完成 - Java(推荐的Play框架),PHP(推荐CodeIgniter框架),Javascript(Node),Ruby(Rails)等等。你会做什么(从高层次)可能会看起来像:

- Read request. This would be a url you configure on the server app. 
    The url might look something like, "http://yourdomain.net/get/mashup/{service1:yourfirstservice.com, service2:yournextservice.com,...}. 

- Parse the json into individual requests and load each of them from your server app. (The fastest way that I've found to complete this task is by using cURL's multi_init and multi_exec functions, via PHP. That said, Java and Ruby have equally powerful multi-threading capabilities). 

- Put the results of each query into a json map. 

- Once all responses come back, output the json response from your server and consume on your client side. 

无论如何,这就是我会做的。希望我的回复能够以某种方式帮助你!

-Brandon

+0

+1为干净的方式来做到这一点。此外,这种方式可能会缓存频繁的请求。只需添加另一个服务器端选项:对于初学者来说,Python与[web2py](http://web2py.com)框架是一个简单的选择。有一个很好的[视频](http://www.youtube.com/watch?v=M5IPlMe83yI&noredirect=1)关于如何使用包含缓存的web2py使用web服务。 [pythonanywhere](https://www.pythonanywhere.com/)提供一键安装的免费托管服务。 – brdlph 2013-04-19 05:51:51

相关问题