用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入门详解(多篇文章结合)
Mar 07 NodeJs
nodejs开发微博实例
Mar 25 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
Nodejs监控事件循环异常示例详解
Sep 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
javascript中的location用法简单介绍
2007/03/07 Javascript
IE8 浏览器Cookie的处理
2009/01/31 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
python连接字符串的方法小结
2015/07/13 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
给我一面国旗 python帮你实现
2019/09/30 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
品学兼优的大学生自我评价
2013/09/20 职场文书
电气专业应届生求职信
2013/11/01 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
校园十大歌手策划书
2014/02/01 职场文书
保护地球的标语
2014/06/17 职场文书
法人委托书范本
2014/09/15 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
导游词之桂林
2019/08/20 职场文书
Python进行区间取值案例讲解
2021/08/02 Python
HTML+JS实现在线朗读器
2022/02/15 Javascript