• 学习JSONP


    最近自己研究 跨域调用js,然后 发现 有jsonp 这种技术,在Jquery中可以使用,于是 研究下原理

    发现: 其实 就是 利用<script>的跨域访问的能力. 调用 服务端 返回的一段 字符串 这段字符串 很有 特点必须是 一个"函数",例如 A({'data':'111'})

    例子 返回一个 这个 函数,这明显是就是调用  A函数,并传入数值....于是想到 如果 我的页面上有个处理 函数例如 A(data){ alert(data.data)};

    那么 我的 A函数 就会被 调用.... alert 出 111 来.

    对 这就是 实现的原理

    下面 写一下 jquery的用法:

    1  $.getJSON('http://www.test.com:3448/ProcessJSONPTest.ashx?callback=?', function (data) {
    2                 alert(data.a);
    3             });
    View Code

    callback=? 这是必须写的  如果不这么写 jquery认为不是跨域请求 将无法发送请求

    服务端拼接字符串的处理:

     1  public class ProcessJSONPTest : IHttpHandler
     2     {
     3 
     4         public void ProcessRequest(HttpContext context)
     5         {
     6             context.Response.ContentType = "text/plain";
     7             //context.Response.Write("Hello World");
     8             if (!string.IsNullOrEmpty(context.Request["callback"]))
     9             {
    10                 string callback = context.Request["callback"];
    11                 System.Web.Script.Serialization.JavaScriptSerializer javaScriptSerializer=new JavaScriptSerializer();
    12                 string str= javaScriptSerializer.Serialize(new {a = 100, b = 200});
    13                 //此处要和客户端 执行函数配置 不然无法调用
    14                 context.Response.Write(string.Format("{0}({1})",callback,str));
    15             }
    16         
    17         }
    18 
    19         public bool IsReusable
    20         {
    21             get
    22             {
    23                 return false;
    24             }
    25         }
    26     }
    View Code

    其他的用法和ajax 异步没区别

  • 相关阅读:
    AcWing
    The Preliminary Contest for ICPC Asia Nanjing 2019
    2004-2005 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2004)
    自考新教材-p352_1
    自考新教材-p351_4
    自考新教材-p350_3
    自考新教材-p350_2
    自考新教材-p349_3(1)
    自考新教材-p347
    自考新教材-p346
  • 原文地址:https://www.cnblogs.com/rufus-hua/p/3347059.html
Copyright © 2020-2023  润新知