zoukankan      html  css  js  c++  java
  • 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>
    

      

  • 相关阅读:
    结构体作为函数参数
    自定义子窗口与主窗口通信
    Qt性能问题
    后缀表达式、中缀表达式
    QMap的使用
    自定义QSS
    Qt查找孩子findChild
    ThinkPHP 3.2.3 数据缓存与静态缓存
    Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别  Pig
    Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别  Pig
  • 原文地址:https://www.cnblogs.com/dcrBook/p/10037075.html
Copyright © 2011-2022 走看看