首页 > 代码库 > Ajax跨域请求
Ajax跨域请求
需求:域名a.test.com要ajax请求b.test.com下的一般处理程序
1.前端Ajax请求:(域名a.test.com下的)
$.ajax({ dataType: "jsonp", data: { "ajaxMethod": "getusergamesign", "cookieid": cookieid }, jsonp: "jsonp_callback", //服务器端接收,用于function名,随便定义 url: ‘http://b.test.com/Ajax/UserGameSign.ashx‘, //请求不同域名的地址 success: _callBack, //也可以写function(result) {...}; error: function() { alert(‘服务器内部错误!‘); }});var _callBack = function(result) { //result为返回的值:{"code":0,"msg":"IB"} if (result != null) { if (result.code == 0) { alert(result.msg); }}};
其他参数:
type : "get", //或postasync:false, //我试了没起到同步的效果
2.服务器端:(域名b.test.com下的)
public class UserGameSign : BaseCommon, IHttpHandler { public void ProcessRequest(HttpContext context) { try { if (!string.IsNullOrEmpty(context.Request["ajaxMethod"])) { string responseText = ""; context.Response.ContentType = "text/plain"; string ajaxMethod = context.Request["ajaxMethod"].ToLower(); switch (ajaxMethod) { case "getusergamesign": responseText = this.GetUserGameSign(context); break; default: break; } context.Response.Write(responseText); //返回的结果:{"code":0,"msg":"IB"} context.Response.End(); } } catch (Exception ex) //解决此错误:Thread was being aborted. 问题详解>> { if (!(ex is System.Threading.ThreadAbortException)) { context.Response.Write(ex.Message); context.Response.End(); } } } /// <summary> /// 获取用户标签 /// </summary> /// <param name="context"></param> /// <returns></returns> public string GetUserGameSign(HttpContext context) { string cookieIdstr = context.Request["cookieid"]; string strFormat = "{{\"code\":{0},\"msg\":\"{1}\"}}"; //判断是否是jsonp方式请求 string jsonp = string.Empty; if (!string.IsNullOrEmpty(HttpContext.Current.Request["jsonp_callback"])) { jsonp = context.Request["jsonp_callback"]; context.Response.ContentType = "text/javascript"; } User user = new User(); string userProperty = user.GetUseProperty(cookieId); if (!string.IsNullOrEmpty(userProperty)) { if (string.IsNullOrEmpty(jsonp)) { return string.Format(strFormat, 0, userProperty); //正常形式返回 } else {
//jsonp类型的返回 格式:jsonp({"code":0,"msg":"IB"}) 作为前端ajax回调函数的参数 return jsonp + "(" + string.Format(strFormat, 0, userProperty) + ")"; } } else { return string.Format(strFormat, -1, "失败"); } } }
站外扩展阅读:
jquery使用jsonp进行跨域调用
jsonp详解
ajax 和jsonp 不是一码事 细读详解
说说JSON和JSONP,也许你会豁然开朗
Ajax跨域请求
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。