如何使用jsonp和node.js express

我试图让三星智能电视应用程序与node.js。

在我的项目中,我想让我的应用程序与服务器PC进行通信。

根据许多网站,我可以用“jsonp”来做到这一点。

这是我find的客户端代码。

<html> <head> <title>jsonp test</title> <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script> <script type="text/javascript"> $(function(){ $('#select_link').click(function(e){ e.preventDefault(); console.log('select_link clicked'); function test(data){ return {"message":"ok"}; } $.ajax({ dataType: 'jsonp', data: "data=yeah", jsonp: 'callback', url: 'http://172.20.10.3:3000/endpoint?callback=?', success: function(data) { console.log('success'); console.log(JSON.stringify(data)); } }); }); }); </script> </head> <body> <div id="select_div"><a href="#" id="select_link">Test</a></div> </body> 

而且,这里是我find的服务器端代码。

 app.get('/endpoint', function(req, res){ var obj = {}; obj.title = 'title'; obj.data = 'data'; console.log('params: ' + JSON.stringify(req.params)); console.log('body: ' + JSON.stringify(req.body)); console.log('query: ' + JSON.stringify(req.query)); res.header('Content-type','application/json'); res.header('Charset','utf8'); res.send(req.query.callback + '('+ JSON.stringify(obj) + ');'); }); 

这些代码正在我的电脑(服务器电脑)上工作,但是当我打开其他电脑上的客户端页面,它不起作用。

控制台只给我这个日志:

  X GET http://172.30.2.2:3000/endpoint?callback=jQuery11020685203080996871_1376482492523&data=yeah&_=1376482492524 

我想用jsonp来处理跨域,但它不工作,我认为…

我能做些什么来解决这个问题?

请给我帮助!

只是使用

 res.jsonp(obj) 

你可以去ExpressJS JSONP的更多信息

尝试更换

res.send(req.query.callback + '('+ JSON.stringify(obj) + ');');

 res.jsonp(req.query.callback + '('+ JSON.stringify(obj) + ');');