ajax 跨域

Posted dcrbook

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax 跨域相关的知识,希望对你有一定的参考价值。

一个一般处理程序服务端

返回的数据是json

 public void ProcessRequest(HttpContext context)
        {
            citys c = new citys();
            c.age = "12";
            c.city = "bj";
            c.hosst = "www.baidu.com";
            c.name = "张三";
            c.weather = "天气";
string cc = JsonConvert.SerializeObject(c); context.Response.ContentType = "text/plain"; context.Response.Write( cc ); }

 

这个一般处理程序返回jsonp

 public void ProcessRequest(HttpContext context)
        {
            citys c = new citys();
            c.age = "12";
            c.city = "bj";
            c.hosst = "www.baidu.com";
            c.name = "张三";
            c.weather = "天气";
            string cc = JsonConvert.SerializeObject(c);
            context.Response.ContentType = "text/plain";
            string callbackFunName = context.Request["callback"];
            context.Response.Write(callbackFunName + "([" + cc + "])");
        }

可以看出jsonp是包裹着json这样理解

 json:cc

jsonp:callbackFunName(cc)

下面是客户端的请求

 $("#aaa").click(function () {
                $.ajax({
                    type: "get",
                    async: false,
                    url: "http://www.server.com/handler1.ashx",
                    dataType: "jsonp",
                    jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
                    jsonpCallback: "success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
                    success: function (data) {
                        alert(data);
                        alert(data[0].name);
                    },
                    error: function () {
                        alert(‘fail‘);
                    }
                });
            });

  

以上是关于ajax 跨域的主要内容,如果未能解决你的问题,请参考以下文章

如何发送跨域ajax请求[重复]

关于ajax跨域

如何解决ajax跨域问题

jQuery:跨域 AJAX 调用导致“访问受限 URI 被拒绝”(代码 1012)

前端Jquery-Ajax跨域请求,并携带cookie

ajax之jsonp跨域请求