JSONP 教程

简介: JSONP 教程

本章节我们将向大家介绍 JSONP 的知识。

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

为什么我们从不同的域(网站)访问数据需要一个特殊的技术( JSONP )呢?这是因为同源策略。

同源策略,它是由 Netscape 提出的一个著名的安全策略,现在所有支持 JavaScript 的浏览器都会使用这个策略。


JSONP 应用

1. 服务端 JSONP 格式数据

如客户想访问 : https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction

假设客户期望返回数据:["customername1","customername2"]。

真正返回到客户端的数据显示为: callbackFunction(["customername1","customername2"])。

服务端文件 jsonp.php 代码为:

jsonp.php 文件代码

<?phpheader('Content-type: application/json');//获取回调函数名$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//json数据$json_data = '["customername1","customername2"]';//输出jsonp格式的数据echo $jsoncallback . "(" . $json_data . ")";?>

2. 客户端实现 callbackFunction 函数

<script type="text/javascript">function callbackFunction(result, methodName){    var html = '<ul>';     for(var i = 0; i < result.length; i++)    {        html += '<li>' + result[i] + '</li>';     }    html += '</ul>';     document.getElementById('divCustomers').innerHTML = html;}</script>

页面展示

<div id="divCustomers"></div>

客户端页面完整代码

<!DOCTYPE html><html><head><meta charset="utf-8"><title>JSONP 实例</title></head><body><div id="divCustomers"></div><script type="text/javascript">

function callbackFunction(result, methodName){    var html = '<ul>';     for(var i = 0; i < result.length; i++)    {        html += '<li>' + result[i] + '</li>';     }    html += '</ul>';     document.getElementById('divCustomers').innerHTML = html;}

</script><script type="text/javascript" src="https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script></body></html>


jQuery 使用 JSONP

以上代码可以使用 jQuery 代码实例:

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>JSONP 实例</title>    <script src="https://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script>    </head><body><div id="divCustomers"></div><script>

$.getJSON("https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=?", function(data) {         var html = '<ul>';     for(var i = 0; i < data.length; i++)    {        html += '<li>' + data[i] + '</li>';     }    html += '</ul>';          $('#divCustomers').html(html); });

</script></body></html>

目录
相关文章
|
缓存 JSON 前端开发
CORS 详解,终于不用担心跨域问题了
CORS 详解,终于不用担心跨域问题了
8739 1
CORS 详解,终于不用担心跨域问题了
|
缓存 JavaScript Cloud Native
阿里云发布 Spring Boot 新脚手架,真香
本文,围绕 spring initializr 框架,以 start.spring.io 为例,全面的给大家介绍如何使用和扩展这个框架,以及背后的运行原理。
57969 1
阿里云发布 Spring Boot 新脚手架,真香
|
图形学
unity3d置灰image图片shader
新建材质球,赋值该shader,将材质球复制到image上即可置灰image Shader "UIEffect/ImageGray" { Properties { [PerRendererData] _MainTex("...
1696 0
|
Unix Linux Shell
linux 未预期的符号 `$‘{\r‘‘ 附近有语法错误
linux 未预期的符号 `$‘{\r‘‘ 附近有语法错误
1223 0
|
4月前
|
监控 API 开发者
京东商品详情API响应数据解析
京东开放平台提供多种API接口,可获取商品标题、价格、库存、详情描述等120+字段信息,支持分钟级更新。核心接口包括商品基础信息、详情及SKU查询,适用于比价、监控、营销分析等电商场景。文章还附Python调用示例,便于开发者快速集成。
|
设计模式 安全 Java
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
3681 1
|
Web App开发 缓存 JavaScript
如何检测和解决闭包引起的内存泄露
闭包引起的内存泄露是JavaScript开发中常见的问题。本文介绍了闭包导致内存泄露的原因,以及如何通过工具检测和代码优化来解决这些问题。
|
缓存 JavaScript API
NodeJS代理配置指南:详细步骤和代码示例
**Node.js 代理配置:解决HTTP请求转发与CORS挑战** 在现代开发环境中,Node.js以其高效和灵活性深受青睐,但正确配置代理以处理跨域请求和API调用仍是复杂任务。本文提供全面指南,从基础到高级设置,教授如何在Node.js中使用代理,覆盖httpOptions、npm代理及第三方库的运用,以增强API调用灵活性。
1230 23
NodeJS代理配置指南:详细步骤和代码示例
|
数据采集 JavaScript 前端开发
【逆向基础】JS逆向入门:小白也可以看懂
【逆向基础】JS逆向入门:小白也可以看懂
|
Web App开发 JSON 小程序
苹果app开发apple-app-site-association文件配置
apple-app-site-association 是苹果的配置文件,用于建立app和网站关联,支持Universal Links,使点击网站链接能直接打开相应app内部页面。配置文件为JSON格式,需上传至服务器`.well-known`目录或根目录。通过检查三个链接来测试配置,确保Content-Type为`application/json`。成功配置后,点击链接能在iPhone备忘录或Safari中直接唤起app,但可能有24-48小时延迟。