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 相关文章推荐
js触发asp.net的Button的Onclick事件应用
Feb 02 Javascript
P3P Header解决Cookie跨域的问题
Mar 12 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
Jun 07 Javascript
Egret引擎开发指南之创建项目
Sep 03 Javascript
VUEJS实战之构建基础并渲染出列表(1)
Jun 13 Javascript
修改jquery中dialog的title属性方法(推荐)
Aug 26 Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 Javascript
JavaScript 中的 this 简单规则
Sep 19 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
js实现简单掷骰子小游戏
Oct 24 Javascript
js实现打字小游戏
Dec 17 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的PSR规范中文版
2013/09/28 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
jQuery 浮动广告实现代码
2008/12/25 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
Vue router安装及使用方法解析
2020/12/02 Vue.js
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
Python对列表排序的方法实例分析
2015/05/16 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
材料化学应届生求职信
2013/10/09 职场文书
银行求职推荐信范文
2013/11/30 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
学校政风行风整改方案
2014/10/25 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS