if (params.query && params.query.callback) { var str = params.query.callback + '(' + JSON.stringify(data) + ')';//jsonp res.end(str); }else{ console.log(“else”); res.end(JSON.stringify(data)); } 对JS了解太少了,是在没弄懂~if里的判断和var str = params.query.callback + '(' + JSON.stringify(data) + ')';//jsonp真的是看不懂了
这是如何将data送回的问题,如果有query.callback,就用:params.query.callback + '(' + JSON.stringify(data) + ')',如没有就用:JSON.stringify(data)
代码不全。。。。。 params 应该是:
var URL = require(‘url’); var params = URL.parse(req.url, true); //这个req 也就是下面function中的参数req,client发来的
exports.aFunctionName = function(req,res){ //something; }
在此给出我的function,其中的res也就是上面function中的res,params就是上面定义的,buffer是你自己处理的json数组,比如: var buffer = {status: 'ok’,data:’你自己要响应回brower的JSON’}; 是你真实的数据 exports.resToClient = function(res,params,buffer){ if (params.query && params.query.callback) { var str = params.query.callback + '(' + JSON.stringify(buffer) + ')';//jsonp跨域 res.writeHead(200, {"Content-Type": "application/json"}); res.end(str); } else { res.writeHead(200, {"Content-Type": "application/json"}); res.end(JSON.stringify(buffer));//普通的json } }
以上是对 跨域名请求的响应,那么在client上要跨域请求,其它 ajax参数应该是: 比如:http://sogego.com/dealJSON?callback=?&id="+ id
如果不跨域名,那就写成:http://sogego.com/dealJSON?id="+ id 没有:callback=? 这一句
哪个不清楚 意思主是判断brower是不是跨域名请求,如果是,params.query.callback就有值 然后把callback这个值原封不动的返回,这才能实现跨域名请求的处理。
如果不是跨域,直接res.end()就完事了。