博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js返回JSONP
阅读量:6081 次
发布时间:2019-06-20

本文共 1120 字,大约阅读时间需要 3 分钟。

在使用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调用:

    
jsonp test

  运行代码,点击按钮,在浏览器的console面板总我们可以看到从远程服务器返回的json对象。

  当然,如果使用express,则可以直接使用下面的代码:

router.get('/getinfo',function  (req,res,next) {    var _data = { email: 'example@163.com', name: 'jaxu' };    res.type('application/json');    res.jsonp(_data);});

  参考express的文档

本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/p/5500637.html,如需转载请自行联系原作者

你可能感兴趣的文章
千方百计获取百度网盘下载链接
查看>>
淘宝网页变为繁体,教你如何改回简体
查看>>
网页选项卡
查看>>
数据库的备份与恢复 mysqldump+binlog方式
查看>>
SAMBA服务器的配置
查看>>
Cisco设备配置文件定期备份
查看>>
初次接触Linux
查看>>
mysql行转列(拆分字符串场景)
查看>>
SDL做的一个简单Button
查看>>
php utf8和utf-8的区别
查看>>
近期遇到电脑问题几则
查看>>
lvs nginx 负载均衡
查看>>
Nginx IP纯洁库功能测试
查看>>
H3C MSR 20-10 / 900的×××拨号组网模板
查看>>
Java学习路线
查看>>
恶心的问题: error while loading shared libraries: libstdc++-libc6.2-2.so.3:
查看>>
体验竞争:何以成为家用市场竞争焦点?
查看>>
HttpURLConnection学习
查看>>
开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
查看>>
oracle11g安装
查看>>