JSONP 使用

我们都知道JSONP是解决跨域的一种解决方案。但他怎么使用、又怎么工作呢?

请先参考这篇文章:https://blog.csdn.net/u011897301/article/details/52679486

首先要理解函数定义在客户端,调用的话是跨域加载调用方法,并在调用的地方以参数的形式传递前端想要的数据。这句话比较抽象,我们举个例子:

前端代码定义一个function:

function jsonhandle(data){
    alert("age:" + data.age + "name:" + data.name);
}

后端返回的数据定义如下:

jsonhandle({
    "age" : 15,
    "name": "张三",
})

通过JSONP的方式加载,我这里用的是这个库:https://github.com/webmodules/jsonp,加载方法如下:

/**
 * 发起jsonp请求的promise形式
 * @param url 请求地址
 * @param ajaxData 附加ajax配置
 * @constructor
 */
function Jsonp = (url, ajaxData = {}) => {
  return new Promise((resolve, reject) => {
    jsonp(
      realUrl(url), {
        timeout: 60000,
        ...ajaxData
      },
      (err, data) => {
        if (err) {
          reject(err.message)
        } else {
          resolve(data)
        }
      }
    )
  })
}

function getUpgrade = () => {
  return Jsonp('https://yn-oa.oss-cn-shanghai.aliyuncs.com/static/js/upgrade.js', {
    name: 'upGradeData'
  })
}

 getUpgrade().then(res => {
       console.log('这里是后端以参数形式传来的数据:',res);
 })

注意:上面getUpgrade方法里的name(函数名)和后端返回的函数名要一致。为了扩展功能,您当然可以传递作何变量,在后端以如下形式收取:

<?php
$data = array(
    'age' => 20,
    'name' => '张三',
);

$callback = $_GET['callback'];

echo $callback."(".json_encode($data).")";
return;

这样后端就可以动态的返回函数名和数据。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值