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 触发事件列表 比较不错
Sep 03 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
Jun 16 Javascript
jQuery处理图片加载失败的常用方法
Jun 08 Javascript
高效利用Angular中内置服务$http、$location等
Mar 22 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
js实现日期显示的一些操作(实例讲解)
Jul 27 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
JavaScript变量提升和严格模式实例分析
Jan 27 Javascript
JS实现的简单tab切换功能完整示例
Jun 20 Javascript
node中实现删除目录的几种方法
Jun 24 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与MySQL交互使用详解
2006/10/09 PHP
php+mysql写的简单留言本实例代码
2008/07/25 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
js href的用法
2010/05/13 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
2019/05/24 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
详解python的ORM中Pony用法
2018/02/09 Python
python如何读写json数据
2018/03/21 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
python实现石头剪刀布程序
2021/01/20 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
python with (as)语句实例详解
2020/02/04 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
应届生财务管理求职信
2013/11/06 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
大学军训感言400字
2014/03/11 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
2014年度工作总结报告
2014/12/15 职场文书