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');
                    }
                });
            });

 

---------------------------------------------------------------------------------------------------------------------------------------------------

 自己做一个一般处理程序,让请求变为同域

一个天气请求的接口处理

 public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write(getString());
        }
        private string getString()
        {
            HttpWebRequest re = WebRequest.Create("http://www.weather.com.cn/data/sk/101010100.html") as HttpWebRequest;
            HttpWebResponse rs = re.GetResponse() as HttpWebResponse;
            string st = new StreamReader(rs.GetResponseStream()).ReadToEnd();
            return st;
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

  使用ajax 请求变成了同域,

                返回的数据为string ,使用JSON.parse()  转化为json 对象

               直接使用js对象 就可以查询想看的数据了

  <script>
            $("#aaa").click(function () {
                debugger;
                $.ajax({
                    type: "get",
                    async: false,
                    url: "handler1.ashx",
                    success: function (data) {
                        debugger;
                        alert(data);
                        debugger;
                        var js = JSON.parse(data);
                        var v = js.weatherinfo.city;
                        var d = js.weatherinfo.temp;
                        var a = js.weatherinfo.WD;
                        alert(js.city);
                    },
                    error: function () {
                        alert('fail');
                    }
                });
            });
        </script>

  

转载于:https://www.cnblogs.com/dcrBook/p/10037075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值