JSONP 教程

2023-10-27

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

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

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

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


JSONP 应用

1. 服务端 JSONP 格式数据

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

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

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

jsonp.php 文件代码

<?php header('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>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSONP 教程 的相关文章

  • 通过 PHP 将 CSV 导入 MYSQL

    我正在将 CSV 文件导入到我的管理区域 并且我想将文件添加到我的数据库中 我的 PHP 代码import php is
  • 最有用的 jQuery 原生 API 函数

    前 5 10 个最常用的 jQuery 本机 API 函数是什么 请不要建议 jQuery 函数本身 因为毫无疑问这是最常用的函数 如果可能的话 还请提供它们所涵盖的场景 提出这个问题的原因是我尝试创建一个类似 jQuery 的 API充足
  • TypeError:React 中的循环对象值

    这是我的代码 sendMail e e preventDefault fetch https uczsieapp mailer herokuapp com var name document getElementById name var
  • 如何在延迟加载期间在图像占位符顶部显示“正在加载”gif 图像

    我正在使用这个 jQuery 插件来延迟加载我的图像 惰性加载器 http www appelsiini net projects lazyload 它运行良好 我只想在所有尚未加载的图像之上显示一个 正在加载 图像 可能是 gif 当图像
  • Gecko/Firefox 对 HTML5 通知的支持

    我想知道是否有任何内置支持HTML5 通知到目前为止 Gecko 浏览器有哪些功能 也许有一些隐藏的开发人员 我知道 WebKitwindow webkitNotifications效果很好 那么 有 Firefox 实现吗 Update
  • WebRTC、getDisplayMedia() 不捕获远程流中的声音

    我有一个自己的网络应用程序 它基于peerjs库 它是一个视频会议 我正在尝试使用 MediaRecorder 进行录制 但我遇到了一个非常不愉快的情况 捕获我的桌面流的代码如下 let chooseScreen document quer
  • Karma 测试报告运行速度快,但实际上运行速度慢

    最好的解释是a video https youtu be Zwwi01JuPrQ 或参见下面的 gif 您会注意到 Karma 进度报告器报告测试只需要几毫秒 但显然需要相当长的时间 我在推特上提到了这一点 https twitter co
  • PHP 7.4 已弃用 get_magic_quotes_gpc 函数替代

    我遇到了我的旧代码之一正在使用的情况get magic quotes gpc 最新版本已弃用PHP 版本 7 4 目前 我有这样的事情 添加斜杠 return get magic quotes gpc addslashes string s
  • Mocha 测试对原生 ES6 模块的“esm”支持

    有一个很棒的帖子 使用 Mocha 和 esm 测试原生 ES 模块 https web archive org web 20220318155753 https alxgbsn co uk 2019 02 22 testing nativ
  • 传单地图显示为灰色

    我正在启动 leaflet js快速开始 http leafletjs com examples quick start html但我的地图显示为灰色 我缺少什么吗 脚本 js var leafletMap L map leafletMap
  • 如何使用 PHP 解释 HTML5 输入日期值

    我需要让用户选择一个日期 最好采用 dd mm yy 格式 我决定尝试新的 HTML5 输入日期类型 但是我不知道如何解释它在服务器端给出的值 我得到的值是 yyyy mm dd 我怎样才能做到这一点 如果用户使用不支持它的旧版浏览器怎么办
  • 如何判断CKEditor是否已加载?

    如何确定 CKEditor 是否已加载 我查看了API文档 但只能找到loaded事件 我想检查 CKEditor 是否已加载 因为如果我第二次加载它 我的文本区域就会消失 The loaded活动对我不起作用 instanceReady
  • Jquery 对话框部分视图服务器端验证“保存”按钮单击

    我有一个显示数据的表格 表格的每一行都有编辑按钮 单击编辑按钮时 将出现一个 jquery 对话框 其中包含用于编辑用户信息的表单以及保存和取消按钮 表单只不过是部分视图 按钮是部分视图的一部分
  • 从路径中删除不必要的斜杠

    path home to my site 我正在尝试删除不必要的正斜杠 从上面的路径 我正在努力得到这个结果 home to my site 我失败了str replace 因为我不知道斜线的数量 优雅的解决方案 With preg rep
  • Dojo require,模块加载失败时连接错误

    当我尝试加载不存在的模块时 它失败并出现 404 错误 当然 我想处理此错误 但不知道如何连接到 错误 事件 根据 Dojo 文档 我应该能够使用它的微事件 API http livedocs dojotoolkit org loader
  • RegisterClientScriptCode 在部分回发后不起作用

    以下代码行位于 SharePoint 网站的用户控件中 ScriptManager RegisterClientScriptBlock this this GetType jquery144 false ScriptManager Regi
  • 如何检查输入元素是否隐藏?

    如何检查输入元素是否被隐藏 隐藏为type hidden myInputElement attr type hidden 隐藏为display none myInputElement is hidden
  • gulp-uglify 不会保留文件顺序

    当我使用吞咽丑化 https github com terinjokes gulp uglify为了缩小 Javascript 文件 顺序变得混乱 可以说我让这个任务按预期工作 var gulp require gulp var renam
  • Bootstrap $('#myModal').modal('show') 不起作用

    我不知道为什么 但所有模态功能都不适用于我 我检查了版本和负载 它们都很好 我不断收到此错误消息 Uncaught TypeError modal is not a function 对于隐藏我已经找到了替代方案 代替 myModal mo
  • 根据对象内的值将对象数组分成两部分

    我一直在尝试 并努力 弄清楚如何根据键值对拆分对象数组 长话短说 我有一个火车正在停靠的车站列表 需要将之前的停靠点和未来的停靠点分开 我正在使用的数据如下所示 station code SOC station name Southend

随机推荐

  • 详解 http-server的安装和使用

    简介 http server 命令行http服务器 http server是一个简单的零配置命令行http服务器 它足够强大 足以用于生产用途 但它既简单又易于破解 可用于测试 本地开发和学习 使用前提 http server 基于node
  • Android:位置服务

    前言 在开发 Android 位置相关应用时 可以从 GPS 全球定位系统 passive network 获取用户位置 通过 GPS 能获得最精确的信息 LocationProvider 是位置源的意思 用来提供定位信息 常用的 Loca
  • Apriori算法是什么?适用于什么情境?

    Apriori适用于什么场景 Apriori算法是常用的用于挖掘出数据关联规则的算法 它用来找出数据值中频繁出现的数据集合 找出这些集合的模式有助于我们做一些决策 例如什么商品集合顾客会在同一次购物中购买 最著名的例子莫过于啤酒与尿布的故事
  • Android蓝牙开发的一些经验

    http blog csdn net icyfox bupt article details 25487125 先说一下背景 我是开发手机与带蓝牙的智能设备 蓝牙血压计 血糖仪 手环等 设备对接的APP 也就是说 在设备端没有什么可以操作的
  • 面试官:我就问了一个JVM性能调优,没想到他能吹半个小时

    一 JVM内存模型及垃圾收集算法 1 根据Java虚拟机规范 JVM将内存划分为 New 年轻代 Tenured 年老代 永久代 Perm 其中New和Tenured属于堆内存 堆内存会从JVM启动参数 Xmx 3G 指定的内存中分配 Pe
  • 迟来的函数传参补充——传引用【引用调用】【c++】

    文章目录 1 传引用 1 1 特点 1 2 使用 1 2 1 一般引用 1 2 2 常量引用 1 3 案例 1 3 1 常见变量引用做函数参数 1 3 2 结构体引用做函数参数 1 传引用 函数传参 几乎一直在用简单的值传递 或者传指针 前
  • Selenium浏览器自动化测试框架简单介绍

    目录 selenium简介 介绍 功能 优势 基本使用 获取单节点 获取多节点 节点交互 动作链 执行JavaScript代码 获取节点信息 切换frame 延时等待 前进和后退 cookies 选项卡管理 异常处理 选项卡切换 无头浏览器
  • Python--类及其方法

    Python 类及其方法 文章目录 Python 类及其方法 前言 一 类的定义 二 继承类定义 二 类的专业方法 前言 在 Python 中 面向对象编程主要有两个主题 就是类和类实例 类与实例 类与实例相互关联着 类是对象的定义 而实例
  • React怎样在非组件环境下拿到路由信息实现路由跳转

    最近写项目的时候遇到一个问题 如图所示 用户token失效后 页面需要跳转回登录页面 用location href直接赋值会导致页面刷新 对SPA来说是可耻的 而且location href跳转的时候 页面并没有提示信息出现就直接跳转了 然
  • 微信小程序——flex布局

    flex布局的基本知识 flex布局作用于父容器之上 用于控制其子盒子的位置和排列的方式 flex是Flexible Box的缩写 意为 弹性布局 用来为盒状模型提供最大的灵活性 任何一个容器都可以指定为Flex布局 box display
  • 应用层概述、基本原理

    网络应用体系结构 客户机 服务器结构 Client Server C S 点对点结构 peer to peer P2P 混合结构 Hybrid 1 客户机 服务器结构 服务器 7 24小时提供服务 永久性访问地址 域名 利用大量服务器实现可
  • aix安装bff_在AIX中安装与维护软件

    学习内容 在 AIX 中安装与维护软件 学习目标 1 了解安装软件包的含义及命名规则 2 了解 AIX 如何发布补丁 知道自己的 AIX 及已安装软件的版本情况 3 知道如何安装与管理软件及升级 4 会修复损坏的软件 5 知道如何通过 Fi
  • Linux/Windows中根据端口号关闭进程及关闭Java进程

    目录 Linux 根据端口号关闭进程 关闭Java服务进程 Windows 根据端口号关闭进程 Linux 根据端口号关闭进程 第一步 根据端口号查询进程PID 可使用如下命令 netstat anp grep 8088 以8088端口号为
  • java判空方式

    java判空方式 1 数据结构判空 map list set CollectionUtils isEmpty 为空 CollectionUtils isNotEmpty 不为空 2 对象判空 Objects isNull 为空 Object
  • IPv6你知道多少?

    IPv6是什么 互联网协议 IP 地址是分配给连接到互联网的每个设备的数字标识符 从广义上讲 IP地址允许设备相互通信并交换信息 Internet协议版本4 IPv4 于1983年发布 至今仍用于大多数Internet通信 IPv4地址使用
  • MongoDB.WebIDE:升级版的Mongodb管理工具

    很早以前收藏了一片文章 强大的MongoDB数据库管理工具 最近刚好要做一些MongoDB方面的工作 于是翻出来温习了一下 用起来也确实挺方便 不过在使用过程中出现了一些个问题 加上更喜欢MongoUVE的操作习惯 于是决定 自己动手 丰衣
  • Java之object和string的理解

    Java之object和string的理解 文章链接http blog csdn net qq 16628781 article details 65036244 知识点 栈区 堆区和方法区 object类clone 和qeuales 方法
  • dubbo之mock模拟

    1 写在前面 考虑这样的场景 当服务提供者还没有开发完毕或者是因为某些原因无法启动时 会导致服务消费者方的停滞 此时为了能够正常的开发测试 可以使用mock功能 在服务消费者端提供一个服务接口的mock实现类 来模拟调用服务提供者正常获取结
  • RCE高危漏洞预警:CVE-2021-40444简要分析

    漏洞影响及其危害 未经身份验证的攻击者可以利用该漏洞在目标系统上执行代码 Microsoft发布了一份关于此漏洞的官方公告 这篇博客文章讨论了该漏洞如何发挥作用 我们已获得多个利用此漏洞的文档样本 文档包中的document xml rel
  • JSONP 教程

    本章节我们将向大家介绍 JSONP 的知识 Jsonp JSON with Padding 是 json 的一种 使用模式 可以让网页从别的域名 网站 那获取资料 即跨域读取数据 为什么我们从不同的域 网站 访问数据需要一个特殊的技术 JS