博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用nodejs实现json和jsonp服务
阅读量:5849 次
发布时间:2019-06-19

本文共 1479 字,大约阅读时间需要 4 分钟。

hot3.png

一、JSON和JSONP

      JSONP的全称是JSON with Padding,由于同源策略的限制,XmlHttpRequest只允许请求当前源(协议,域名,端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在相应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式成为JSONP。

      由此我们可以看出两者的区别:

      json: 一种轻量级的数据格式。

      jsonp:为实现跨域,而采用的一种脚本注入方法。

      备注:要了解更多json,可以参见我原先写的一篇介绍json的文章:

      二、实现

      为了简单起见,我们要读取数据都是

var data = {'name': 'jifeng', 'company': 'taobao'};

 

      1. 服务器端代码:

[javascript] 

  1. var http = require('http');  

  2. var urllib = require('url');  

  3.   

  4. var port = 10011;  

  5. var data = {

    'name''jifeng''company''taobao'};  

  6.   

  7. http.createServer(function(req, res){  

  8.   var params = urllib.parse(req.url, true);  

  9.   console.log(params);  

  10.   if (params.query && params.query.callback) {  

  11.     //console.log(params.query.callback);  

  12.     var str =  params.query.callback + '(' + JSON.stringify(data) + ')';//jsonp  

  13.     res.end(str);  

  14.   } else {  

  15.     res.end(JSON.stringify(data));//普通的json  

  16.   }       

  17. }).listen(port, function(){  

  18.   console.log('server is listening on port ' + port);    

  19. })  

 

      2. 游览器端代码,为方便起见,我直接用了jquery的方法

[javascript] 

  1. <html>    

  2. <head>    

  3.   <script src="http://code.jquery.com/jquery-latest.js"></script>    

  4.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    

  5. </head>    

  6. <body>    

  7. <script type="text/javascript">    

  8. function get_jsonp() {    

  9.   $.getJSON("http://10.232.36.110:10011?callback=?",    

  10.   function(data) {  

  11.     $('#result').val('My name is: ' + data.name);    

  12.   });    

  13. }    

  14. </script>    

  15. <a href="javascript:get_jsonp();">Click me</a><br />    

  16. <textarea id="result" cols="50" rows="3"></textarea>    

  17. </body>    

  18. </html>  

转载于:https://my.oschina.net/sharesuiyue/blog/414609

你可能感兴趣的文章
三维重建技术概述
查看>>
AI x 量化:华尔街老司机解密智能投资正确姿势
查看>>
IT史上十大收购案
查看>>
数据切分——Atlas介绍
查看>>
游戏引擎cocos2d-android使用大全
查看>>
oracle job 定时执行参数
查看>>
Android命令Monkey压力测试,详解
查看>>
负载均衡(LB)集群 dr
查看>>
(转)直接拿来用!最火的iOS开源项目(一)
查看>>
div+css+js 树形菜单
查看>>
android EventBus 3.0 混淆配置
查看>>
我的友情链接
查看>>
DNS区域委派与转发
查看>>
Windows Server 2008 RemoteApp---发布应用程序
查看>>
白帽子技术分析会话劫持实战讲解
查看>>
我的友情链接
查看>>
yum的三种方式
查看>>
Redis分布式缓存安装和使用
查看>>
PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程以及注意事项
查看>>
20天精通 Windows 8:系列课程资料集
查看>>