Node.js返回JSONP详解

 更新时间:2016年05月18日 15:55:53   转载 投稿:jingxian  
下面小编就为大家带来一篇Node.js返回JSONP详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在使用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 Buffer用法解读

    Node.js Buffer用法解读

    这篇文章主要介绍了Node.js Buffer用法解读,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Nodejs实现的一个简单udp广播服务器、客户端

    Nodejs实现的一个简单udp广播服务器、客户端

    这篇文章主要介绍了Nodejs实现的一个简单udp广播服务器、客户端,本文直接给出实现代码,需要的朋友可以参考下
    2014-09-09
  • Node.js编写组件的三种实现方式

    Node.js编写组件的三种实现方式

    这篇文章主要介绍了Node.js编写组件的三种实现方式,包括纯js实现、v8 API实现(同步&异步)、借助swig框架实现,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • NodeJs之word文件生成与解析的实现代码

    NodeJs之word文件生成与解析的实现代码

    这篇文章主要介绍了NodeJs之word文件生成与解析的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • node.js中的dns.getServers方法使用说明

    node.js中的dns.getServers方法使用说明

    这篇文章主要介绍了node.js中的dns.getServers方法使用说明,本文介绍了dns.getServers方法说明、语法和实现源码,需要的朋友可以参考下
    2014-12-12
  • node.js基础模块http、网页分析工具cherrio实现爬虫

    node.js基础模块http、网页分析工具cherrio实现爬虫

    这篇文章主要为大家介绍了node.js基础模块http、网页分析工具cherrio实现爬虫的相关资料,需要的朋友可以参考下
    2016-03-03
  • node.js学习之base64编码解码

    node.js学习之base64编码解码

    开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了。实际上Base64已经简单到不能再简单了,这篇文章给大家通过示例代码介绍了node.js对字符串和图片base64编码解码的方法,有需要的朋友们可以通过本文来进行学习,下面来一起看看吧。
    2016-10-10
  • nodejs对mongodb数据库的增加修删该查实例代码

    nodejs对mongodb数据库的增加修删该查实例代码

    在本篇文章里小编给大家整理的是一篇关于nodejs对mongodb数据库的增加修删该查实例代码,有需要的朋友们可以参考下。
    2020-01-01
  • Koa2 之文件上传下载的示例代码

    Koa2 之文件上传下载的示例代码

    本篇文章主要介绍了Koa2 之文件上传下载的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解

    NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解

    本篇文章主要介绍了NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05

最新评论