服务器端支持jsonp,用nodejs实现json和jsonp服务的方法

一、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的方法

function get_jsonp() {

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

function(data) {

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

});

}

Click me

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值