问题概述

通过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>

【C#】WebService接受跨域请求及返回json数据的更多相关文章

  1. AJAX 跨域请求 - JSONP获取JSON数据

    Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示 ...

  2. 【转】AJAX 跨域请求 - JSONP获取JSON数据

    来源:http://justcoding.iteye.com/blog/1366102/ Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流 ...

  3. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

  4. Query通过Ajax向PHP服务端发送请求并返回JSON数据

    Query通过Ajax向PHP服务端发送请求并返回JSON数据 服务端PHP读取MYSQL数据,并转换成JSON数据,传递给前端Javascript,并操作JSON数据.本文将通过实例演示了jQuer ...

  5. Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题

        webservice 代码 /// <summary> /// MESService 的摘要说明 /// </summary> [WebService(Namespac ...

  6. jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

    SON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.JSON在前后台交互的过程中发挥着相当出色的作用.请接着往下看教 ...

  7. MOOC(2)-Django开发get、post请求,返回json数据

    1.对get请求直接返回参数 如果请求多个参数,也只能返回一个参数,这里只返回了username参数 如果想要返回多个参数值,可以返回json格式数据 2.对get请求返回json数据 # views ...

  8. 跨域请求获取Solr json检索结果并高亮显示

    Solr提供了json格式的检索结果,然而在跨域的情况下如何调用呢?我们可以利用jquery提供的jsonp的方式获取Solr检索结果. <script type="text/java ...

  9. Jquery通过ajax请求NodeJS返回json数据

    最近看了NodeJS相关的,在网上查了下结合AJAX的应用,感觉应用前景还是不错的.为什么用这个组合呢? 1.NodeJS不需要安装,拷贝过去就可以使用,而环境变量可以只配置在当前cmd窗口,运行方便 ...

随机推荐

  1. java.net.URISyntaxException 问题解决

    先上代码: Properties pro = PropertyUtil.getPropertiesInfo("xxx.properties"); String url = pro. ...

  2. Android学习笔记显示和隐藏ActionBar

    要在应用中使用ActionBar 需要android:minSdkVersion:11以上,现在基本都可以用了 创建Android项目如果不做特殊设置默认都带有ActionBar 如果不想要Actio ...

  3. HTML中doctype的作用及几种类型详解

    一.DOCTYPE标签的定义与作用 <!DOCTYPE>是一个用于声明当前HTMl版本,用来告知web浏览器该文档使用是哪种 HTML 或者 XHTML 规范来解析页面,以便浏览器更加准确 ...

  4. APP——python——自动化环境搭建01

    前提:python以及pycharm安装完成. ---------------------------------------------------------------------------- ...

  5. drf之序列化组件(一):Serializer

    序列化组件:Serializer.ModelSerializer.ListModelSerializer Serializer  偏底层  ModelSerializer       重点  List ...

  6. django 分页器,序列化 ,MTV MVC

    序列化组件## from django.core import serializers # django自带的一个小型的序列化工具# def reg(request):# user_list = mo ...

  7. DNS区域传输和DNS字典爆破

    nslookup命令是已知域名的的解析记录下进行的查询.打个比方,已知sina.com这个域名有www.sina.com这条主机解析记录,就可以查询www.sina.com对应的ip以及其他相关信息. ...

  8. JFinal 开箱评测,这次我是认真的

    引言 昨天在看服务器容器的时候意外的遇到了 JFinal ,之前我对 JFinal 的印象仅停留在这是一款国人开发的集成 Spring 全家桶的一个框架. 后来我查了一下,好像事情并没有这么简单. J ...

  9. activiti学习笔记二

    上一篇文章大概讲了下什么是流程引擎,为什么我们要用流程引擎,他的基本原理是啥,以及怎么进行基本的使用,这篇文章我们再讲下其他的一些使用. 删除流程部署 package activiti02; impo ...

  10. 入门大数据---Spark简介

    一.简介 Spark 于 2009 年诞生于加州大学伯克利分校 AMPLab,2013 年被捐赠给 Apache 软件基金会,2014 年 2 月成为 Apache 的顶级项目.相对于 MapRedu ...