为了账号安全,请及时绑定邮箱和手机立即绑定

简易Jsonp请求

标签:
深度学习

JSONP(JSON with Padding)是[JSON]的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

通俗来说,浏览器默认不支持跨域请求,但是script标签支持访问其它域名的数据,jsonp数据返回的是个javascript函数,函数中的参数是要使用的json数据。

936

查看数据类型

使用方式

<!DOCTYPE html><html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jsonp测试</title>
</head>
<body>
<div>
    <p id="code"></p>
    <p id="msg"></p>
</div>
<script>
  function hello (res) { 
     console.log(res)    
     document.getElementById('code').innerText = res.code    
     document.getElementById('msg').innerText = res.message;
  }
</script>
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original=" 
</body>
</html>

解释:


  1. 请求的script地址要带上callback参数,主要看后端人员制定的回调参数名是什么,我们这里指定的是hello
    <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="http://192.168.8.250:8002/test/jsonp?callback=hello">


  1. 回调参数必须要有函数存在才行

function hello (res) { 
   console.log(res)    
   document.getElementById('code').innerText = res.code    
   document.getElementById('msg').innerText = res.message;
}

结果:


1000

页面结果

最后

jsonp的使用方式并不复杂,也无需依赖第三方库,这里介绍一下jsonp的用法。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消