Node.js返回JSONP详解


Posted in Javascript onMay 18, 2016

在使用JQuery的Ajax从服务器请求数据或者向服务器发送数据时常常会遇到跨域无法请求的错误,常用的解决办法就是在Ajax中使用JSONP。基于安全性考虑,浏览器会存在同源策略,然而<script/>标签却具有跨域访问数据的能力,这就是JSONP工作的基本原理。有关同源策略以及什么是JSONP。

在Node.js中实现JSONP非常简单,通过下面的代码我们从服务器返回并运行一个JavaScript函数,这个JavaScript函数已经在调用方提前被定义好了,于是当它被返回的时候就自动执行了。

var express = require('express');
var router = express.Router();

router.get('/getinfo', function(req, res, next) {
 var _callback = req.query.callback;
 var _data = { email: 'example@163.com', name: 'jaxu' };
 if (_callback){
   res.type('text/javascript');
   res.send(_callback + '(' + JSON.stringify(_data) + ')');
 }
 else{
   res.json(_data);
 }
});

module.exports = router;

代码中必须规定从服务器返回数据的类型,代码res.type('text/javascript')被加在返回的数据之前用于告诉浏览器这是一段JavaScript代码。

前端页面通过JQuery调用:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>jsonp test</title>
  <script src="/bower_components/jquery/dist/jquery.js"></script>
</head>
<body>
  <input type="button" value="click" id="btn">
  <script type="text/javascript">
    $(function(){
      $('#btn').on('click', function(){
        $.get('http://anothersite/api/getinfo', function(d){
          console.log(d);
        }, 'jsonp');
      });
    });
  </script>
</body>
</html>

运行代码,点击按钮,在浏览器的console面板总我们可以看到从远程服务器返回的json对象。

Node.js返回JSONP详解

以上这篇Node.js返回JSONP详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
select组合框option的捕捉实例代码
Sep 30 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
Apr 27 Javascript
JQuery与JSon实现的无刷新分页代码
Sep 13 Javascript
JS生成随机字符串的多种方法
Jun 10 Javascript
JS制作简单的三级联动
Mar 18 Javascript
详解JavaScript中shift()方法的使用
Jun 09 Javascript
javascript 小数乘法结果错误的处理方法
Jul 28 Javascript
bootstrap响应式表格实例详解
May 15 Javascript
详解vue-meta如何让你更优雅的管理头部标签
Jan 18 Javascript
vue开发中遇到的问题总结
Apr 07 Javascript
vue中destroyed方法的使用说明
Jul 21 Javascript
vant中的toast层级改变操作
Nov 04 Javascript
noty ? jQuery通知插件全面解析
May 18 #Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
May 18 #Javascript
jQuery实现图片向左向右切换效果的简单实例
May 18 #Javascript
JavaScript 基础函数_深入剖析变量和作用域
May 18 #Javascript
实现JavaScript的组成----BOM和DOM详解
May 18 #Javascript
深入理解JQuery中的事件与动画
May 18 #Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
May 18 #Javascript
You might like
星际争霸兵种名称对照表
2020/03/04 星际争霸
通用PHP动态生成静态HTML网页的代码
2010/03/04 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
python实现统计代码行数的方法
2015/05/22 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
python 自动去除空行的实例
2018/07/24 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
高中毕业自我鉴定
2013/12/16 职场文书
新春文艺演出主持词
2014/03/27 职场文书
佛光寺导游词
2015/02/10 职场文书
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis
JS实现简单的九宫格抽奖
2022/06/28 Javascript