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>


相关文章
|
18天前
|
JavaScript 前端开发 安全
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
39 10
|
1月前
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
45 8
|
2月前
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
49 9
|
2月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
2月前
|
XML C# 数据格式
一个.NET开源、免费、功能强大的 PDF 处理工具
一个.NET开源、免费、功能强大的 PDF 处理工具
|
2月前
|
网络协议 C#
3款.NET开源、功能强大的通讯调试工具,效率提升利器!
3款.NET开源、功能强大的通讯调试工具,效率提升利器!
55 10
|
2月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
3月前
|
JavaScript 前端开发 容器
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
61 5
|
3月前
|
消息中间件 监控 数据可视化
基于.NET开源、功能强大且灵活的工作流引擎框架
基于.NET开源、功能强大且灵活的工作流引擎框架
|
3月前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
50 2

热门文章

最新文章