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 ...
随机推荐
- Java的自动拆装箱与Integer的缓存机制
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10832303.html 一:基本类型与包装类型 我们知道,Java有8大基本数据类型,4整2浮1符1 ...
- linux函数深入探索——open函数打开文件是否将文件内容加载到内存空间
转自:https://blog.csdn.net/qq_17019203/article/details/85051627 问题:open(2)函数打开文件是否将文件内容加载到内存空间 首先,文件打开 ...
- 【JavaScript】BOM对象——Window对象&History对象&Location 对象
1.Window对象: 表示浏览器中打开的窗口 setInterval():它有一个返回值,主要是提供给 clearInterval 使用. setTimeout():它有一个返回值,主要是提供给 c ...
- 爬虫篇-python爬虫中多线程的使用
queue介绍 queue是python的标准库,俗称队列.可以直接import引用,在python2.x中,模块名为Queue.python3直接queue即可 在python中,多个线程之间的数据 ...
- 用Python玩转微信
Python玩转微信 大家每天都在用微信,有没有想过用python来控制我们的微信,不多说,直接上干货! 这个是在 itchat上做的封装 http://itchat.readthedocs.io ...
- Consul 学习资料
资料 网址 Consul 入门指南 https://book-consul-guide.vnzmi.com/
- Git 游离态的一次问题解决
jie@mozq MINGW64 /d/0xcEdu/xcEduService01 ((20ce6a5...)) $ git branch -v * (HEAD detached at 20ce6a5 ...
- ACE在Ubuntu下的安装和编译
之前写了很多linux下的底层网络API的demo,这些demo可用于了解底层的网络通信过程,但是想做出好的服务器用于实际业务还是非常困难的,需要大量的代码实现,移植性也非常差,想要写出高性能架构的服 ...
- 第08组 Beta版本演示
简介 组名:955 组长博客:点这里! 成员 031702329庄锡荣(组长) 031702309林晓锋 031702309侯雅倩 031702311陈珊珊 171709030吴珂雨 03170231 ...
- Python基于tkinter.messagebox实现简易消息框、对话框
库导入: import tkinter import tkinter.messagebox 有关提示框: tkinter.messagebox.showinfo(title=None, message ...