Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 663|回复: 0

C# jquery webservices 跨域调用的问题解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-7 12:24:28 | 显示全部楼层 |阅读模式

    前台代码:

         <script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>

        

     $('#getString').click(function() {
                    $.ajax({
                        url: url + "jQueryMobile.asmx/GetProjInfoList?jsoncallback=?", //webservice总返回Json数据的方法
                        type: 'POST',
                        data: {UserId:'majunfei'},
                        //contentType: "application/json",
                        dataType: "json",
                        success: function(res) {
                            //alert(res);
                           // var strRet = res.d; //Net3.5
                            alert(res.result);
                            strRet = $.parseJSON(res); //eval("(" + strRet + ")");
                            var b_ok = strRet.success;
                            var strInfo = strRet.info;
                            alert(strInfo);
                            $.each(strRet.rows, function(index, row) {
                                alert(row.proj_code);
                                alert(row.proj_name)
                            });
                            //data = $.parseJSON(''+data+'');//jquery1.4
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown) {
                            $("div").html(textStatus);
                            $("div").append("<br/>status:" + XMLHttpRequest.status);
                            $("div").append("<br/>readyState:" + XMLHttpRequest.readyState);
                            $("div").append("<br/>responseText:" + XMLHttpRequest.responseText);
                        }
                    });
                   // var clientUrl = "http://172.20.1.71:8099/jQueryMobile.asmx/GetProjInfoList?jsoncallback=?";
    //                $.getJSON(
    //                    clientUrl,
    //                    { UserId: 'majunfei' },
    //                    function(json) {
    //                        alert(json.result);
    //                        //  $("#data").html("城市:" + json.city + ",时间:" + json.dateTime);
    //                    }
    //                );
    //                        $.ajax({  
    //                            url: clientUrl,  
    //                            dataType: "jsonp",  
    //                            data : {UserId: 'majunfei'},  
    //                            success : OnSuccess,  
    //                            error : OnError  
    //                        });  
                        
    
    //                    function OnSuccess(responseData) {
    //                        alert(responseData.result);
    //                       // $("#data").html(responseData.city);
    //                    }
    //                    function OnError(XMLHttpRequest, textStatus, errorThrown) {
    //                        targetDiv = $("#data");
    //                        if (errorThrown || textStatus == "error" || textStatus == "parsererror" || textStatus == "notmodified") {
    //                            targetDiv.replaceWith("请求数据时发生错误!");
    //                            return;
    //                        }
    //                        if (textStatus == "timeout") {
    //                            targetDiv.replaceWith("请求数据超时!");
    //                            return;
    //                        }
    //                    }  
    
    
    
                    //            $.ajax({
                    //                type: "get",
                    //               // data: "{UserId:'majunfei'}",
                    //                async: false,
                    //                url: "http://172.20.1.71:8099/jQueryMobile.asmx/GetProjInfoList",
                    //                dataType: "jsonp",
                    //                jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
                    //                jsonpCallback: "flightHandler", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
                    //                success: function(res) {
                    //                    var strRet = res.d; //Net3.5
                    //                    //alert(strRet);
                    //                    strRet = eval("(" + strRet + ")");
                    //                    var b_ok = strRet.success;
                    //                    var strInfo = strRet.info;
                    //                    alert(strInfo);
                    //                    $.each(strRet.rows, function(index, row) {
                    //                        alert(row.proj_code);
                    //                       alert(row.proj_name)                         
                    //                    });
                    //                    //data = $.parseJSON(''+data+'');//jquery1.4
                    //                },
                    //                error: function() {
                    //                    alert('fail');
                    //                }
                    //            });
    
    
                });

    后台代码:

    /// <summary>
        ///WebService 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
        [System.Web.Script.Services.ScriptService]
        public class WebService : System.Web.Services.WebService
        {
    
     /// <summary>
            /// 根据当前用户帐户,获取项目信息列表
            /// </summary>
            /// <param name="UserId">当前用户帐户</param>
            /// <returns></returns>
            [WebMethod]
            public void GetProjInfoList(string UserId)
            {
               // string callback = HttpContext.Current.Request["jsoncallback"];
                string callbackMethodName = HttpContext.Current.Request.Params["jsoncallback"] ?? "";
                var m_DicRoot = new Dictionary<string, object>();
                try
                {
                    string strSql = "select proj_code,proj_name from FN_PM_UserDefaultProjLimits('" + UserId + "') where sortNo<>10";
                    DataTable dt_projInfo = TmpSqlServer.ExecuteSqlRead(strSql);
                    m_DicRoot.Add("success", true);
                    m_DicRoot.Add("info", "读取数据成功");
                    var list = new List<Dictionary<string, object>>();
                    foreach (DataRow dr in dt_projInfo.Rows)
                    {
                        var m_dic = new Dictionary<string, object>();
                        m_dic.Add("proj_code", dr["proj_code"].ToString());
                        m_dic.Add("proj_name", dr["proj_name"].ToString());
                        list.Add(m_dic);
                    }
                    m_DicRoot.Add("rows", list);
                }
                catch (Exception e)
                {
                    m_DicRoot.Add("success", false);
                    m_DicRoot.Add("info", e.ToString());
                }
                //关于result这词是你自己自定义的属性
                //会作为回调参数的属性供你调用结果 21 
                //HttpContext.Current.Response.ContentType = "application/json";
                //HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
                // HttpContext.Current.Response.Write(callbackMethodName + "({result:'true'})");
                HttpContext.Current.Response.Write(callbackMethodName + "({result:'" + ListToJson(m_DicRoot) + "'})"); 
                HttpContext.Current.Response.End();
                 
                
                
                //HttpContext.Current.Response.Write( ListToJson(m_DicRoot));
                //return ListToJson(m_DicRoot);
            }
    
        }
    
    
    }

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 22:19 , Processed in 0.056092 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表