用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和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
nodejs 生成和导出 word的实例代码
Jul 31 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 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读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
JS按字节截取字符长度实例
2013/11/20 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
深入理解vue Render函数
2017/07/19 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
python psutil监控进程实例
2019/12/17 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
留学自荐信
2013/10/10 职场文书
现金会计岗位职责
2013/12/05 职场文书
学校介绍信范文
2014/01/14 职场文书
《散步》教学反思
2014/03/02 职场文书
出国留学经济担保书
2014/04/01 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
出国签证在职证明范本
2014/11/24 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
vue实现简易音乐播放器
2022/08/14 Vue.js