ajax可以直接访问web Service吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax可以直接访问web Service吗?相关的知识,希望对你有一定的参考价值。

也就是说,直接页面上的javascript调用远程的web method,跳过web 服务器,web服务器和web Service服务器不是同一个服务器。这样可以实现的吗?

这个一定能行,虽然我没有测试网络上的webservice,但是自己写webserv还是测试过。

我说的前提是在VS开发环境下。
首先你的webservice,类[classA]前面中许加上一句:
[System.Web.Script.Services.ScriptService]

然后在需要被js调用的方法[Hello]前加:
[WebMethod]

在web页面上放入scriptmanager ,设置EnablePageMethods="true",这样JS才能知道webservice。
添加webservice引用。
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
<Scripts>
<asp:ScriptReference Path="~/JScript1.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="~/WebServiceTest.asmx" />
</Services>
</asp:ScriptManager>

这里的path可以设置为网络上的webservice路径。

然后在JS函数中直接调用就行了,如果webservice有命名控件,还要带上命名空间[namespaceA]。

调用:
namespaceA.classA.Hello(参数,oncomplete,onerror)

执行成功后调用的函数:oncomplete(value)
执行异常或失败后调用的函数:onerror(error)

剩余的就是你触类旁通的推敲一下,然后应用到你的实际情况上了。
参考技术A 如果你的WEBSERVICE直接提供可序列化的数据,比如字符串,XML等,那可以直接用JS调用,但WEBSERVICE可提供的数据不至这些,那你需要用在WEB服务器上先把WEBSERVICE提供的数据转化为可序列化的数据后,再用JS去调用. 参考技术B 当然可以,在ajax里send参数里写上所有SOAP消息,不过比较麻烦。你得写最底层的SOAP包发过去,而这个底层的SOAP包 不是高手一般很难构造出来。本回答被提问者采纳 参考技术C 可以,如果你的webservice提供http请求,比如支持get、post请求,那么通过Ajax按照契约来访问webservice之后得到xml或者object,这样就可以实现了。

唯一的不同就是js不能跨域。呵呵,遇到再说了

web service做啥用的,我知道winform是做c/S的软件,webform 是做网站

那么web service做什么的,有学习教程吗?介绍下

参考技术A web
service
是用web的方式提供后台服务的,它用来做多种结构的系统整合和集成,可以为不同的客户端提供服务,换言之,你可以用winform+web
service来实现
C/S
(
这里说的C/S
不是那种
winform直接访问数据库,所有逻辑都在客户端的2层结构软件。而是客户端访问服务器端,由服务器端去进行数据操作等等的多层结构,大多是自己用类似winform的程序写服务器端程序
,web
service出现以后也可以用
web
service
来实现后台服务)

也可以用
html
+
web
service
来实现B/S,
还可以提供
web
service
接口,让别的平台的系统来访问你的系统的功能,比如你用
.net
写了一个库存管理系统,别人用java或者PHP写的销售或者OA系统可以通过你提供的web
service来查询库存,而不需要直接来查询你的数据库。

以上是关于ajax可以直接访问web Service吗?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用Axis2发布一个webservice,service返回json格式数据,可以用Ajax访问直接解析?

web service006——第三种方式调用,通过Ajax方式访问(跨域)http请求xml数据

web service做啥用的,我知道winform是做c/S的软件,webform 是做网站

ASP.NET 访问Web Service 失败

69期-Java SE-042_Tomcat-1

Ajax Post to Overloading c# web service方法