zoukankan      html  css  js  c++  java
  • jsonp Ajax跨域请求

    什么是JSONP?

    JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。

    先来搞清楚它的原理

    首先在客户端注册一个callback, 然后把callback的名字传给服务器,此时,服务器先生成 json 数据。
    然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
    最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
    客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)

    下面示范一个demo

     $(function () {
                $.ajax({
                    url: 'http://localhost:30158/Home/GetUser',
                    dataType: "jsonp",
                    jsonp: "jsoncallback",
                    success: function (data) {                  
                        console.log(data);
                        if (data!="") {
    
                        } 
                    }
                });
            })

    服务端的代码,我简单做了一个方法

       [HttpGet]
            public ActionResult GetUser()
            {
              
                var jsoncallback = WebContext.Request.TrimGet<string>("jsoncallback", "");
                string userInfo = JsonConvert.SerializeObject(new { Name = "admin", LoginTime = DateTime.Now });
                return Content(string.Format("{0}({1})", jsoncallback, userInfo));
    
            }

    结果:Object {Name: "admin", LoginTime: "2016-07-19T14:09:27.3922877+08:00"}

  • 相关阅读:
    第六周作业----测试自动化工具
    第六周作业----内聚耦合
    HTML 滚动条实现
    mysql练习(一)
    flume本地调试
    -Dmaven.multiModuleProjectDirectory system propery is not set
    Cannot read property 'substring' of undefined
    JVM的几个介绍
    storm(二)消息的可靠处理
    storm(一)
  • 原文地址:https://www.cnblogs.com/UnJie/p/5684612.html
Copyright © 2011-2022 走看看