用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获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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实现的操作数组类库定义与用法示例
2019/05/24 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
js下用层来实现select的title提示属性
2010/02/23 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
jquery密码强度校验
2015/12/02 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python引用计数操作示例
2018/08/23 Python
python cumsum函数的具体使用
2019/07/29 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
《石榴》教学反思
2014/03/02 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
小学生作文评语集锦
2014/12/25 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python