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 相关文章推荐
Javascript中的相等与不等运算
Apr 25 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
手机软键盘弹出时影响布局的解决方法
Dec 15 Javascript
js实现将json数组显示前台table中
Jan 10 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
Aug 26 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 Javascript
JavaScript实现京东放大镜效果
Dec 03 Javascript
浅析Vue 中的 render 函数
Feb 28 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
简单谈谈favicon
2015/06/10 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
require.js中的define函数详解
2017/07/10 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
js仿360开机效果
2019/12/26 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
深入解析Python中的lambda表达式的用法
2015/08/28 Python
python中实现控制小数点位数的方法
2019/01/24 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
如何用Python绘制3D柱形图
2020/09/16 Python
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
电脑教师的自我评价
2013/12/18 职场文书
物流管理专业推荐信
2014/09/06 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
对象析构函数__del__在Python中何时使用
2022/03/22 Python