用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抓取html页面内容(推荐)
Aug 11 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
原生nodejs使用websocket代码分享
Apr 07 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
Nodejs核心模块之net和http的使用详解
Apr 02 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
php实现登陆模块功能示例
2016/10/20 PHP
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
js 走马灯简单实例
2013/11/21 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
python关闭windows进程的方法
2015/04/18 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
pycharm安装和首次使用教程
2018/08/27 Python
10个Python小技巧你值得拥有
2018/09/29 Python
python实现任意位置文件分割的实例
2018/12/14 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
C#实现启动一个进程
2016/10/01 面试题
中学生个人自我评价
2014/02/06 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
小学生安全保证书
2015/05/09 职场文书
食品安全责任书范本
2015/05/09 职场文书
地心历险记观后感
2015/06/15 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
python pygame 开发五子棋双人对弈
2022/05/02 Python