用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 url验证(url-valid)的使用方法
Nov 18 NodeJs
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 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解析http获取的json字符串变量总是空白null
2015/03/02 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
VsCode与Node.js知识点详解
2019/09/05 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
大学生毕业自我鉴定范文
2013/09/19 职场文书
高一地理教学反思
2014/01/18 职场文书
实习评语大全
2014/04/26 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
病假证明模板
2015/06/19 职场文书
工作感想范文
2015/08/07 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
Nginx四层负载均衡的配置指南
2021/06/11 Servers
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS