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中简单的登录界面制作方法
Aug 19 Javascript
获取body标签的两种方法
Oct 13 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
Jan 15 Javascript
js精度溢出解决方案
Dec 02 Javascript
JS执行删除前的判断代码
Feb 18 Javascript
JS中使用变量保存arguments对象的方法
Jun 03 Javascript
Bootstrap入门教程一Hello Bootstrap初识
Mar 02 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
vue+element+Java实现批量删除功能
Apr 08 Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 Javascript
微信小程序 WeUI扩展组件库的入门教程
Apr 21 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
python中for语句简单遍历数据的方法
2015/05/07 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
Python构建图像分类识别器的方法
2019/01/12 Python
基于Python函数和变量名解析
2019/07/19 Python
python 字符串追加实例
2019/07/20 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
EJB timer的种类
2014/10/28 面试题
介绍一下Ruby的特点
2013/01/20 面试题
农村党支部先进事迹
2014/01/14 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
带病坚持工作事迹
2014/05/03 职场文书
电子专业求职信
2014/06/19 职场文书
党员志愿者活动方案
2014/08/28 职场文书
信访维稳工作汇报
2014/10/27 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python
Java实现房屋出租系统详解
2021/10/05 Java/Android