用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学习小结(一)
Jul 06 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 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
实用函数7
2007/11/08 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
jQuery 选择器理解
2010/03/16 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
vue实现文字加密功能
2019/09/27 Javascript
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
python小程序实现刷票功能详解
2019/07/17 Python
Python csv模块使用方法代码实例
2019/08/29 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
大学运动会通讯稿
2014/01/28 职场文书
微信营销策划方案
2014/02/24 职场文书
关于建议书的格式范文
2014/05/20 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
高三语文复习计划
2015/01/19 职场文书
中英文求职信范文
2015/03/19 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL