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 相关文章推荐
ExtJS GTGrid 简单用户管理
Jul 01 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
Jul 31 Javascript
Java 正则表达式学习总结和一些小例子
Sep 13 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
Jan 16 Javascript
Javascript call和apply区别及使用方法
Nov 14 Javascript
Vue.js中用v-bind绑定class的注意事项
Dec 13 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
Apr 27 Javascript
Vue中使用vux的配置详解
May 05 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
Feb 03 Javascript
vue的diff算法知识点总结
Mar 29 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
php foreach循环中使用引用的问题
2013/11/06 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
php查看网页源代码的方法
2015/03/13 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
SQL中where和having的区别
2012/06/17 面试题
物业经理求职自我评价
2013/09/22 职场文书
职高毕业生自我鉴定
2013/10/21 职场文书
党校培训思想汇报
2013/12/30 职场文书
人事科岗位职责范本
2014/03/02 职场文书
欢迎家长标语
2014/10/08 职场文书
被告答辩状范文
2015/05/22 职场文书
小学数学教学反思范文
2016/02/16 职场文书
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript