JavaScript入门(三)
JavaScript入门篇—JSONP的应用
什么是JSONP
个人理解:将服务器端返回的json数据封装成JavaScript对象,非正式传输协议。
JSONP解决了什么问题
Ajax不支持跨域请求。JavaScript在请求ajax的时,URL的请求域名和当前页面完全一致。跨域是指:协议、域名、端口一致。而JSONP的出现解决了跨域请求。
JSONP为什么可以解决跨域请求
Web页面调用JS文件时不受跨域的影响,还有拥有src这个属性的标签也一样不受跨域影响。<script>、<img>、<iframe>,而且<script>标签里的内容会被自动执行。因此在服务端把json数据封装成一个JavaScript对象。
JSONP的使用
以http://api.money.126.net/data/feed/0000001,1399001?callback=refreshPrice为例
- 服务器端创建JavaScript对象(类似这样):
String callbackFunction=request.getParameter(“callback”); //获取回调方法名refreshPrice
//将json数据封装成JavaScript对象refreshPrice({"0000001":{"code": "0000001", ...} });
Return result=callbackFunction+”(“+json+”)”;
- 在JavaScript中准备回调函数refreshPrice (data).
function refreshPrice(data) {
varp = document.getElementById('test-jsonp');
p.innerHTML ='当前价格:'+
data['0000001'].name +': '+
data['0000001'].price +';'+
data['1399001'].name +': '+
data['1399001'].price;
}
- 给页面动态添加<script>
function getPrice() {
var
js = document.createElement('script'),
head = document.getElementsByTagName('head')[0];
js.src ='http://api.money.126.net/data/feed/0000001,1399001?callback=refreshPrice';
head.appendChild(js);
}
这个function被执行时,在head标签里追加
<script src="http://api.money.126.net/data/feed/0000001,1399001?callback=refreshPrice"></script>。
当web页面被加载执行该<script>时,相当于执行<script>refreshPrice({"0000001":{"code": "0000001", ... });<script>
而<script>里的内容会被自动执行,此时调用准备好的refreshPrice回调函数获取json数据。
JavaScript入门(三)的更多相关文章
- Javascript入门(三)函数
Javascript函数 一.函数定义与执行 <script type="text/javascript"> //define function fun1(){ ale ...
- JavaScript入门三
*********BOM和DOM******** JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 Java ...
- JavaScript的三种工业化调试方法
JavaScript的三种工业化玩法 软件工程中任何的语言如果想要写出健壮的代码都需要锋利的工具,当然JavaScript也不例外,很多朋友刚入门的时候往往因为工具选的不对而事半功倍,JavaScri ...
- JavaScript入门篇 编程练习
编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...
- 慕课网JavaScript入门篇课程笔记
1.js注释很重要 单行注释,在注释内容前加符号 “//”. <script type="text/javascript"> document.write(" ...
- 开心菜鸟系列----函数作用域(javascript入门篇)
1 <!DOCTYPE html> 2 <html> 3 <script src="./jquery-1.7.2.js"></ ...
- javascript入门视频第一天 小案例制作 零基础开始学习javascript
JavaScript 是我们网页设计师必备的技能之一.我们主要用javascript来写的是网页特效.我们从零基础开始学习javascript入门. 但是,好的同学刚开始不知道怎么学习,接触js,因此 ...
- JavaScript入门篇
记录一下在慕课网学习JavaScript的过程. 以下内容均来自慕课网. 传送:https://www.imooc.com/code/401 为什么学习JavaScript 1. 所有主流浏览器都支持 ...
- JavaScript入门--慕课网学习笔记
JAVASCRIPT—(慕课网)入门篇 我们来看看如何写入JS代码?你只需一步操作,使用<script>标签在HTML网页中插入JavaScript代码.注意, <script&g ...
随机推荐
- 201800628模拟赛T2——最大土地面积
题目描述 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 输入输出格式 输入格式: 第1行一个正整数N,接下来N行,每行2个数x,y ...
- NOIP 2015 推销员
洛谷 P2672 推销员 洛谷传送门 JDOJ 2994: [NOIP2015]推销员 T4 JDOJ传送门 Description 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死 ...
- Kinect for Windows V2开发教程
教程 https://blog.csdn.net/openbug/article/details/80921437 Windows版Kinect SDK https://docs.microsoft. ...
- es6 中的模块导入与nodejs 中模块的导入的异同!
我们知道es6 的模块导入导出是通过import 和 export 来实现,而nodejs的模块导入导出是通过require 和module.exports 来实现,那么它们有什么异同吗? 请看如下: ...
- Java实现递归阶乘
public class Factorial{ public static void main(String[] args){ for (int i = -5; i <= 5; i++) { S ...
- C语言博客作业04—数组
0.展示PTA总分(0----2) 展示3张关于"数组题目集"分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理数组这章学习主要知识点,必须包含内容有: (1)数组查 ...
- 关于组件--React
组件按照页面结构可以分成,头部.底部.内容部分.这样就可以写三个组件. 组件内部还可以包含下一级组件, 比如头部,可以包含登录,注册等组件. 底部 可以 包含一些链接等. 内容部分可以包含表单组件.按 ...
- java web开发入门一(servlet和jsp)基于eclispe
servlet 用java语言开发动态资源网站的技术,在doGet方法中拼接显示html,在doPost方法中提交数据.类似于.net的ashx技术. servlet生成的class文件存放在tomc ...
- Android 10 终于来了!增加了不少新特性
前言 Android 10 正式发布了,根据官网的介绍,聚焦于隐私可控.手机自定义与使用效率,此版本主要带来了十大新特性: image 智能回复 使用机器学习来预测你在回复信息时可能会说些什么,这 ...
- concurrent (二)AQS
参考文档: https://www.cnblogs.com/waterystone/p/4920797.html