用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学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
Nodejs实战心得之eventproxy模块控制并发
Oct 27 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
nodejs入门教程四:URL相关模块用法分析
Apr 24 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 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
德生PL330的评价与改造
2021/03/02 无线电
用PHP调用数据库的存贮过程!
2006/10/09 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
php自动加载代码实例详解
2021/02/26 PHP
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
php跨域调用json的例子
2013/11/13 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
Python 的描述符 descriptor详解
2016/02/27 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
百联网上商城:i百联
2017/01/28 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
造型师求职自荐信
2013/09/27 职场文书
平面设计师工作职责范文
2013/12/03 职场文书
后勤主管岗位职责
2014/03/01 职场文书
委托书的样本
2015/01/28 职场文书
同学聚会感言一句话
2015/07/30 职场文书
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python