在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
通过Web Service发布服务供客户端调用是一种非常简单、方便、快速的手段,并且服务发布后会有一个服务说明页面,直观明了,如图: 一般情况下,在web页面中的JavaScript中调用Web Service时,由于上述服务返回的数据是xml格式的,虽然js也能处理
xml,但就是用着不太爽,如果能直接让webService返回json数据,那就再好不过了。
此外,JavaScript访问webService时通常还会遇到跨域的问题,之前有提到过可以使用Jsonp处理,但也是比较麻烦的,需要服务端和客户端同时做好处理。
WebService返回json数据在Visual Studio中创建WebService的过程此处不再赘述,可参考:http://blog.csdn.net/yexuanbaby/article/details/9029605 默认WebService的方法定义我们是这样写的: [WebMethod] public string HelloWorld() { return "Hello World"; } 这种写法无论我们的返回值是否是json字符串,最终都会被xml包一层,不能直接作为json数据处理的,将返 回类型改为void,return部分改为如下部分: Context.Response.Charset = "UTF-8"; Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); Context.Response.Write(jsonStr); Context.Response.End(); 其中jsonStr是json字符串,为string类型的数据,这样返回的数据就不再是xml格式的,直接是json数据了。 Tips:关于c#如何将对象转为json字符串,可以使用JavaScriptSerializer 类。 服务端配置搞定跨域问题关于如何使用Jsonp处理跨域问题,参考:http://www.cnblogs.com/lightmao/p/6083996.html 其实我们在web应用的配置文件web.config中添加以下节点就可以了,可以在Access-Control-Allow-Origin处设置允许跨域访问的域名,*表示接受所有的跨域请求。 <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/> <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> </system.webServer> |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论