用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 npm package.json中文文档
Sep 04 NodeJs
轻松创建nodejs服务器(3):代码模块化
Dec 18 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 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
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
13个PHP函数超实用
2015/10/21 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
python3.6实现学生信息管理系统
2019/02/21 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
PageFactory设计模式基于python实现
2020/04/14 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
node中使用shell脚本的方法步骤
2021/03/23 Javascript
企业统计员岗位职责
2013/12/13 职场文书
高中生学习计划书
2014/09/15 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书