用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学习笔记之网络编程
Aug 03 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 NodeJs
nodejs文件夹深层复制功能
Sep 03 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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 smarty的预保留变量总结
2008/12/04 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
用 JSON 处理缓存
2007/04/27 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
pytorch 数据集图片显示方法
2018/07/26 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
实习单位推荐信范文
2013/11/27 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
团队会宣传标语
2014/10/09 职场文书
质量保证书格式
2015/02/27 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
会议营销主持词
2015/07/03 职场文书
考研经验交流会策划书
2015/11/02 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers