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) {
    var p = 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入门(三)的更多相关文章

  1. Javascript入门(三)函数

    Javascript函数 一.函数定义与执行 <script type="text/javascript"> //define function fun1(){ ale ...

  2. JavaScript入门三

    *********BOM和DOM******** JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 Java ...

  3. JavaScript的三种工业化调试方法

    JavaScript的三种工业化玩法 软件工程中任何的语言如果想要写出健壮的代码都需要锋利的工具,当然JavaScript也不例外,很多朋友刚入门的时候往往因为工具选的不对而事半功倍,JavaScri ...

  4. JavaScript入门篇 编程练习

    编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...

  5. 慕课网JavaScript入门篇课程笔记

    1.js注释很重要 单行注释,在注释内容前加符号 “//”. <script type="text/javascript"> document.write(" ...

  6. 开心菜鸟系列----函数作用域(javascript入门篇)

      1 <!DOCTYPE html>   2 <html>   3 <script src="./jquery-1.7.2.js"></ ...

  7. javascript入门视频第一天 小案例制作 零基础开始学习javascript

    JavaScript 是我们网页设计师必备的技能之一.我们主要用javascript来写的是网页特效.我们从零基础开始学习javascript入门. 但是,好的同学刚开始不知道怎么学习,接触js,因此 ...

  8. JavaScript入门篇

    记录一下在慕课网学习JavaScript的过程. 以下内容均来自慕课网. 传送:https://www.imooc.com/code/401 为什么学习JavaScript 1. 所有主流浏览器都支持 ...

  9. JavaScript入门--慕课网学习笔记

     JAVASCRIPT—(慕课网)入门篇 我们来看看如何写入JS代码?你只需一步操作,使用<script>标签在HTML网页中插入JavaScript代码.注意, <script&g ...

随机推荐

  1. 201800628模拟赛T2——最大土地面积

    题目描述 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 输入输出格式 输入格式: 第1行一个正整数N,接下来N行,每行2个数x,y ...

  2. NOIP 2015 推销员

    洛谷 P2672 推销员 洛谷传送门 JDOJ 2994: [NOIP2015]推销员 T4 JDOJ传送门 Description 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死 ...

  3. Kinect for Windows V2开发教程

    教程 https://blog.csdn.net/openbug/article/details/80921437 Windows版Kinect SDK https://docs.microsoft. ...

  4. es6 中的模块导入与nodejs 中模块的导入的异同!

    我们知道es6 的模块导入导出是通过import 和 export 来实现,而nodejs的模块导入导出是通过require 和module.exports 来实现,那么它们有什么异同吗? 请看如下: ...

  5. Java实现递归阶乘

    public class Factorial{ public static void main(String[] args){ for (int i = -5; i <= 5; i++) { S ...

  6. C语言博客作业04—数组

    0.展示PTA总分(0----2) 展示3张关于"数组题目集"分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理数组这章学习主要知识点,必须包含内容有: (1)数组查 ...

  7. 关于组件--React

    组件按照页面结构可以分成,头部.底部.内容部分.这样就可以写三个组件. 组件内部还可以包含下一级组件, 比如头部,可以包含登录,注册等组件. 底部 可以 包含一些链接等. 内容部分可以包含表单组件.按 ...

  8. java web开发入门一(servlet和jsp)基于eclispe

    servlet 用java语言开发动态资源网站的技术,在doGet方法中拼接显示html,在doPost方法中提交数据.类似于.net的ashx技术. servlet生成的class文件存放在tomc ...

  9. Android 10 终于来了!增加了不少新特性

    前言 Android 10 正式发布了,根据官网的介绍,聚焦于隐私可控.手机自定义与使用效率,此版本主要带来了十大新特性:   image 智能回复 使用机器学习来预测你在回复信息时可能会说些什么,这 ...

  10. concurrent (二)AQS

    参考文档: https://www.cnblogs.com/waterystone/p/4920797.html