用nodejs实现json和jsonp服务的方法


Posted in NodeJs onAugust 25, 2017

一、JSON和JSONP

JSONP的全称是JSON with Padding,由于同源策略的限制,XmlHttpRequest只允许请求当前源(协议,域名,端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在相应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式成为JSONP。

由此我们可以看出两者的区别:

json: 一种轻量级的数据格式。

 jsonp:为实现跨域,而采用的一种脚本注入方法。

备注:要了解更多json,可以参见我原先写的一篇介绍json的文章:《JSON那些事》

二、实现

为了简单起见,我们要读取数据都是

var data = {'name': 'jifeng', 'company': 'taobao'};

1. 服务器端代码:

var http = require('http');
var urllib = require('url');

var port = 10011;
var data = {'name': 'jifeng', 'company': 'taobao'};

http.createServer(function(req, res){
 var params = urllib.parse(req.url, true);
 console.log(params);
 if (params.query && params.query.callback) {
 //console.log(params.query.callback);
 var str = params.query.callback + '(' + JSON.stringify(data) + ')';//jsonp
 res.end(str);
 } else {
 res.end(JSON.stringify(data));//普通的json
 }  
}).listen(port, function(){
 console.log('server is listening on port ' + port); 
})

2. 游览器端代码,为方便起见,我直接用了jquery的方法

<html> 
<head> 
 <script src="http://code.jquery.com/jquery-latest.js"></script> 
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head> 
<body> 
<script type="text/javascript"> 
function get_jsonp() { 
 $.getJSON("http://10.232.36.110:10011?callback=?", 
 function(data) {
 $('#result').val('My name is: ' + data.name); 
 }); 
} 
</script> 
<a href="javascript:get_jsonp();" rel="external nofollow" >Click me</a><br /> 
<textarea id="result" cols="50" rows="3"></textarea> 
</body> 
</html>

jquery中getJSON()方法可以参见:http://www.w3school.com.cn/jquery/ajax_getjson.asp

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 #NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 #NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 #NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 #NodeJs
nodejs动态创建二维码的方法
Aug 12 #NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 #NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 #NodeJs
You might like
PHP批量生成缩略图的代码
2008/07/19 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
JavaScript日历实现代码
2010/09/12 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
Django如何自定义分页
2018/09/25 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
python 项目目录结构设置
2020/02/14 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
自动化专业本科毕业生求职信
2013/10/20 职场文书
房地产销售员的自我评价分享
2013/12/04 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
心理学专业求职信
2014/06/16 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL