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 相关文章推荐
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 Javascript
js中各种类型的变量在if条件中是true还是false
Jul 16 Javascript
JavaScript使用cookie记录临时访客信息的方法
Apr 07 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
Jun 13 Javascript
jQuery动态创建元素以及追加节点的实现方法
Oct 20 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
用vue和node写的简易购物车实现
Apr 25 Javascript
JavaScript常用数组操作方法,包含ES6方法
May 10 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
Mar 04 Javascript
vue实现随机验证码功能的实例代码
Apr 30 Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
Vue this.$router.push(参数)实现页面跳转操作
Sep 09 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中hashtable实现示例分享
2014/02/13 PHP
php实现天干地支计算器示例
2014/03/14 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
JS定时关闭窗口的实例
2013/05/22 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
Python中的作用域规则详解
2015/01/30 Python
python简单实例训练(21~30)
2017/11/15 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
解决Python使用列表副本的问题
2019/12/19 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
本科生求职简历的自我评价
2013/10/21 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
项目建议书怎么写
2014/05/15 职场文书
企业宣传策划方案
2014/05/29 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
学习教师法的心得体会
2014/09/03 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
工作感想范文
2015/08/07 职场文书