用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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
nodejs中exports与module.exports的区别详细介绍
Jan 14 NodeJs
nodejs中实现阻塞实例
Mar 24 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
图解NodeJS实现登录注册功能
Sep 16 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
PHP新手上路(十四)
2006/10/09 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
Python中return self的用法详解
2018/07/27 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
护理自荐信
2013/10/22 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
学生个人总结范文
2015/02/15 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
MySQL索引失效的典型案例
2021/06/05 MySQL
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android