jquery ajax GET POST 跨域请求实现

 同一段逻辑代码需要在多个网站中使用, 每个网站都新建一个ashx真是扯蛋的作法,  所以想只请求一处的ashx, 这样便于维护和修改, 那么,ajax跨域问题就来了。 

废话少说, 直接上代码,  我现在做的是GET请求的。 POST请求同理。 

首先整改ashx,加入支持跨域请求的代码。

        context.Response.ContentType = "text/plain"; 
        string active = context.Request.QueryString["active"];
        
        string rs = "0";
        if (active == "3")
        {
            string oid = TGM.BaseOpera.String.replacesql(context.Request.QueryString["oid"]);
            if (!string.IsNullOrEmpty(oid))
            {
                tansar.BLL.order tbo = new tansar.BLL.order();
                string flag = tbo.GetSID(oid);
                if (flag != "1000")
                    rs = "ok";
            }
        }
        #region 支持跨域请求
        context.Response.ClearHeaders();
        string origin = context.Request.Headers["Origin"];
        context.Response.AppendHeader("Access-Control-Allow-Origin",string.IsNullOrEmpty(origin) ? "*" : origin);
        string requestHeaders = context.Request.Headers["Access-Control-Request-Headers"];
        context.Response.AppendHeader("Access-Control-Allow-Headers",string.IsNullOrEmpty(requestHeaders) ? "*" : requestHeaders);
        context.Response.AppendHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
        #endregion 
        
        context.Response.Write(rs);

然后ajax中的js方法:

function getFlag(d) {
                $.ajax({
                    type: "get",
                    async: false,
                    url: "http://www.8kmm.com",
            data: d,
dataType: "text",
            success:
function (data) {
              if (data == "ok") {
               location.href
= "/user/orderdetail.aspx?oid=<%=Onumber %>"; }
              },
            error:
function (XMLHttpRequest, textStatus, errorThrown) {
               alert("请求数据异常:" + errorThrown);
              }
      });

}

做前端开发, 浏览器的开发者工具能帮大忙, 比如webkit内核的, ff的。 

原文地址:https://www.cnblogs.com/jackrebel/p/4612979.html