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"}

  • 相关阅读:
    CodeDeploy 应用程序规范文件
    Lambda 函数的最佳实践
    路由策略
    AWS CodeStar
    使用 Lambda@Edge 在边缘站点自定义内容
    Step Functions
    将应用程序部署到 AWS Elastic Beanstalk 环境
    DynamoDB 静态加密
    web数据安全——防篡改
    【Spring】spring全局异常处理即全局model数据写入
  • 原文地址:https://www.cnblogs.com/UnJie/p/5684612.html
Copyright © 2011-2022 走看看