jquery.Ajax跨域访问数据方法

JQuery.Ajax跨域访问数据方法
收藏人:taohongyong
2014-09-24 | 阅:  转:  
 | 
  |  分享 
  
 

今天耗费大约1天时间折腾异步提交,刚开始没有意识到是跨域访问造成的,后来跟踪了代码,发现请求根本没有发出去,debug发现是权限错误,才意识到跨域访问数据了。 因为JQuery跨域访问是一个很头疼的问题,后来想用弹出窗口,关闭窗口的时候刷新父页面这个方法实现,同样遇到跨域刷新父页面报权限错误。

也 许会有人问,为什么要跨域?因为我需要在一个ASP模块中的一个页面新增一个链接,点击链接的时候调用SOA接口并返回操作结果,刷新当前页面。但是这个 模块是ASP的,我实在不想再增加ASP中的功能,所以打算用C#代码调用SOA,然后用Ajax调用C#程序得到操作结果,但是悲剧的是跨域调用的问题 出现了,两个应用程序不在一个域名下面,公司有一堆扯淡的规范,这个我们必须遵守,最后我甚至想用ASP调用SOA返回结果(尽管非常不想这样做),抱着 一点点希望开始百度JQuery跨域的问题,结果百度相当不靠谱,因为很多人都是看到别人的答案也不管正确不正确,直接转载,在这里要狠狠的鄙视这些不负 责任的作者。无奈之下研究jsonp数据格式,最终成功了,现在分享一下,供以后有跨域异步调用的同学参考,代码如下:

怎么算是跨域:

1:域名不一致

2:域名一直,端口不一致

3:一个程序用域名,一个程序用IP

4:以后再补充

客户端

 <script src="../../../js/jquery-1.6.1-min.js" type="text/javascript"></script>
                    <script type="text/javascript">
                        function ProcessFlightAgency(orderid) {
                           var url = "Http://www.a.com"; //需要访问的域名                         
                              
                            url += "/virtualPath/controller/action?eid=yujh&orderid="+orderid;//拼接请求地址
                            
                           $.ajax({
                                            async:false,
                                            url: url,
                                            type: "GET",//跨域调用只能Get,Post方式好像不支持
                                            dataType: 'jsonp',
                                            jsonp: 'jsoncallback',
                                            data: null,//因为我的参数拼接在URL中了,所以这个就是Null了
                                            timeout: 5000,
                                            success: function (data) {
                                            alert(data); 
                                            location.reload();
                                            },
                                            error: function(xhr){
                                            alert("请求出错(请检查网络状况.)");
                                            }
                             });
                        }
                    </script>

服务器端的代码片段:

 

 

/// <summary>
        /// 订单数据计算
        /// </summary>
        /// <returns>操作结果</returns>
        public void ProcessOrder()
        {
            string resultString = string.Empty;
            string jsonFlag = Request.QueryString["jsoncallback"];
//这个参数是要原样返回的,其实就是客户端回调方法标识,客户端代码中的:jsonp: 'jsoncallback',就是这个参数
            try
            {
                
                int orderid = default(int);
                string eid = Request.QueryString["eid"];
                int result = -8;
                if (int.TryParse(Request.QueryString["orderID"], out orderid))
                {
                    result = ModifyOrder.ProcessOrder(orderid, eid);
                }


                switch (result)
                {
                    case -9:
                        resultString="订单查询失败";
                        break;
                    case -8:
                        resultString="参数错误";
                        break;
                    case 0:
                        resultString="操作成功";
                        break;
                    default:
                        resultString="未知错误";
                        break;
                }

            }
            catch (Exception ex)
            {
                resultString="系统异常!";
            }
            Response.Write(jsonFlag + "('" + resultString + "')");
            //因为我是返回一个string字符串,所以可以这么写,如果要返回json格式的话,需要把resultString改为要返回的Json数据格式即可
 }

 

代码就这么多了,希望对大家有用,也是为了自己以后方便使用。

 


    
       
 
来自: taohongyong > 
转藏到我的图书馆
献花( 0)
+1
分享到微信
以文找文
 
类似文章
更多
  • 使用Jsonp解决跨域数据访问问题_网页设计....
  • 【转】jQuery.ajax使用方法 - 独孤雁 - ...
  • JQuery的Ajax跨域请求的解决方案
  • 说说JSON和JSONP,也许你会豁然开朗
  • Ajax与JSON的一些总结
  • jquery的ajax的应用
  • jQuery.ajaxSetup( options ) : 设置全局....
  • 使用 JSONP 实现跨域通信,第 1 部分: 结....
热门推广
猜你喜欢
长达了要为父母做的40件事
三十种古代趣味诗歌
《当我足够好,才会遇见你》:最牢固...
糖尿病要被灭了
生机盎然
中外农村的真实差距
十招教孩子学会情绪管理
老妈糖醋排骨—不煎不炸
为什么喝水会中毒
渔家姑娘在海边
发表评论:
 
最新文章
  • 手机贴膜技巧图文教程
  • 男子曾见过绿光 等待12年拍到绿色落日
  • JQuery.Ajax跨域访问数据方法
  • 落地数据和不落地数据
  • 奥巴马对中小学生说的话
  • 让Outlook 2010开机自动在托盘启...
更多
热门文章
  • 让笔记本电池马上恢复活力
  • 养眼美女精选(41)
  • 手指速算法
  • 人生如此艰难,其实从小时候就开始了 ...
  • 部分国人不爱排队,这是为什么呢?
  • 实现梦想的二十七条法则
  • 【药品指南】一些价格便宜但好用的药...
  • 48款包子的做法
  • 馋死人的猪蹄,还能美容!买什么胶原...
  • 婚姻中的“第一需求”
  • 素食菜谱
  • 色香味具全的无敌饺子蘸料
更多>>

关闭
关闭

你可能感兴趣的:(jquery.Ajax跨域访问数据方法)