asp.net WebService实现跨域js调用功能实现

简介: 1、Web.Config中增加如下红色标记部分配置:                                                              2、增加一...

1、Web.Config中增加如下红色标记部分配置:

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <!--提供Ajax调用开始 -->
    <webServices>
        <protocols>
            <add name="HttpGet" />
            <add name="HttpPost" />
        </protocols>
    </webServices>
    <!--提供Ajax调用结束-->

  </system.web>


2、增加一个Tools类,如下代码:

    public class Tools
    {
          public static void WriteResult(string callback, string result)
          {
               HttpContext.Current.Response.HeaderEncoding = System.Text.Encoding.UTF8;
               HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
               HttpContext.Current.Response.Write(callback + "(" + result + ")");
               HttpContext.Current.Response.End();
          }
    }


3、WebService文件增加头属性


    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    [System.Web.Script.Services.ScriptService]
    [SoapDocumentService(RoutingStyle = SoapServiceRoutingStyle.RequestElement)]

    public class getData : System.Web.Services.WebService
    {

        #region 1、获取设备信息

        [WebMethod]
        public void GetAllDeviceData()
        {
            string sql = @"select devid,jfid,devname from JfDevice";
            DataTable dtTable = AosySql.ExecuteforDataSet(sql).Tables[0]; //获取数据库数据的方法,使用的数据库访问类,根据自身情况调整
            StringBuilder sb = new StringBuilder();
            if (dtTable.Rows.Count > 0)
            {
                foreach (DataRowView drv in dtTable.DefaultView)
                {
                    sb.Append("{\"DevId\":\"" + drv["devid"].ToString() + "\",");
                    sb.Append("\"DevName\":\"" + drv["devname"].ToString() + "\",");
                    sb.Append("\"JfId\":\"" + drv["jfid"].ToString() + "\"},");
                }
            }
            string result = "[" + sb.ToString().TrimEnd(',') + "]";
            Tools.WriteResult(HttpContext.Current.Request["jsoncallback"], result);
        }

   }


4、将WebService发布到IIS后,在其他系统中的html页面中调用,如下代码所示:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="JS/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
        $(function () {
            getValueFromWebService();
        });

        //查询webservice
        function webservice(url, callback) {
            $.ajax({
                type: 'get',
                url: url,
                dataType: 'jsonp',
                jsonp: 'jsoncallback',
                success: function (result) {
                    callback(result);
                }
            });
        };


        function getValueFromWebService() {
            webservice('http://192.168.33.158/XXXX/WebService/getData.asmx/GetAllDeviceData',
                function (obj) {
                    var data = obj;
                    //成功
                    $.each(data, function (key, item) {
                        // 添加项目内容到ul列表中
                        $('<li>', { text: formatItem(item) }).appendTo($('#room'));
                    });
                });
        }

        function formatItem(item) {
            return item.DevId + ' /  ' + item.DevName + ' / ' + item.JfId;
        }
    </script>
</head>
<body>
    <ul id="room">
    </ul>
</body>
</html>


相关文章
|
5月前
|
存储 文字识别 C#
.NET开源免费、功能强大的 Windows 截图录屏神器
今天大姚给大家分享一款.NET开源免费(基于GPL3.0开源协议)、功能强大、简洁灵活的 Windows 截图、录屏、Gif动图制作神器:ShareX。
102 1
|
2月前
|
人工智能 开发框架 .NET
.NET技术的强大功能:.NET技术的基础特性、在现代开发中的应用、以及它如何助力未来的软件开发。
.NET技术是软件开发领域的核心支柱,以其强大功能、灵活性及安全性广受认可。本文分三部分解析:基础特性如多语言支持、统一运行时环境;现代应用如企业级与Web开发、移动应用、云服务及游戏开发;以及未来趋势如性能优化、容器化、AI集成等,展望.NET在不断变化的技术环境中持续发展与创新。
90 4
|
5月前
|
定位技术 API C#
.NET开源、功能强大、跨平台的图表库
.NET开源、功能强大、跨平台的图表库
|
2月前
|
开发框架 JavaScript 前端开发
提升生产力:8个.NET开源且功能强大的快速开发框架
提升生产力:8个.NET开源且功能强大的快速开发框架
|
2月前
|
Unix Linux C#
增强用户体验:2个功能强大的.NET控制台应用帮助库
增强用户体验:2个功能强大的.NET控制台应用帮助库
|
2月前
|
设计模式 前端开发 数据可视化
LiveCharts2:简单灵活交互式且功能强大的.NET图表库
LiveCharts2:简单灵活交互式且功能强大的.NET图表库
53 0
|
4月前
|
存储 编解码 算法
C#.NET逃逸时间算法生成分形图像的毕业设计完成!晒晒功能
该文介绍了一个使用C#.NET Visual Studio 2008开发的程序,包含错误修复的Julia、Mandelbrot和优化过的Newton三种算法,生成色彩丰富的分形图像。作者改进了原始算法的效率,将内层循环的画点操作移至外部,提升性能。程序提供五种图形模式,支持放大缩小及颜色更新,并允许用户自定义画布大小以调整精度。还具备保存为高质JPG的功能。附有四张示例图片展示生成的分形效果。
|
3月前
|
C# 开发者 Windows
4款.NET开源、功能强大的Windows桌面工具箱
4款.NET开源、功能强大的Windows桌面工具箱
|
3月前
|
C# C++
一款.NET开源、功能强大、跨平台的绘图库 - OxyPlot
一款.NET开源、功能强大、跨平台的绘图库 - OxyPlot
|
3月前
|
人工智能 C#
Jvedio:.NET开源功能强大的本地视频管理神器
Jvedio:.NET开源功能强大的本地视频管理神器
137 0