jquery.Ajax跨域访问数据方法

时间:2022-08-28 15:27:00
jquery.Ajax跨域访问数据方法
 
JQuery.Ajax跨域访问数据方法
收藏人:taohongyong
2014-09-24 | 阅:  转:    |  jquery.Ajax跨域访问数据方法jquery.Ajax跨域访问数据方法jquery.Ajax跨域访问数据方法jquery.Ajax跨域访问数据方法jquery.Ajax跨域访问数据方法jquery.Ajax跨域访问数据方法 jquery.Ajax跨域访问数据方法 jquery.Ajax跨域访问数据方法   |  分享  jquery.Ajax跨域访问数据方法
  
 

今天耗费大约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 > 
转藏到我的图书馆 jquery.Ajax跨域访问数据方法献花(0)+1 分享到微信 以文找文
 
类似文章 更多 热门推广
猜你喜欢jquery.Ajax跨域访问数据方法
jquery.Ajax跨域访问数据方法长达了要为父母做的40件事 jquery.Ajax跨域访问数据方法三十种古代趣味诗歌 jquery.Ajax跨域访问数据方法《当我足够好,才会遇见你》:最牢固... jquery.Ajax跨域访问数据方法糖尿病要被灭了 jquery.Ajax跨域访问数据方法生机盎然
jquery.Ajax跨域访问数据方法中外农村的真实差距 jquery.Ajax跨域访问数据方法十招教孩子学会情绪管理 jquery.Ajax跨域访问数据方法老妈糖醋排骨—不煎不炸 jquery.Ajax跨域访问数据方法为什么喝水会中毒 jquery.Ajax跨域访问数据方法渔家姑娘在海边
发表评论:
  最新文章 更多热门文章 更多>>
关闭 关闭