如何使用jsonp与节点。js表达

时间:2022-03-31 18:28:00

i'm trying to make Samsung Smart TV app with node.js .

我正在尝试用node制作三星智能电视app。js。

In my project, i want to make my app communicating with server pc.

在我的项目中,我想让我的app与服务器pc进行通信。

According to Many Web sites, i can do this with "jsonp".

根据许多网站,我可以用“jsonp”做这个。

Here is a client side code that i found.

这是我找到的客户端代码。

<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>

And, here is a server side code that i found.

这里是我找到的服务器端代码。

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) + ');');
});

These codes are working on my pc(server pc), but when i open client page on others computer, it doesn't work.

这些代码在我的pc(服务器pc)上工作,但是当我在其他计算机上打开客户端页面时,它就不起作用了。

Console just give me this log :

控制台,给我这个日志:

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

I want to use jsonp to handle cross-domain, but it doesn't work i think...

我想使用jsonp来处理跨域,但是我认为它不起作用。

What can i do to fix this?

我该怎么做才能解决这个问题呢?

Please give me help!!

请给我帮助!

2 个解决方案

#1


42  

just use

只使用

res.jsonp(obj)

you can go ExpressJS JSONP for more info

你可以去ExpressJS JSONP获取更多信息

#2


5  

Try to replace

试图取代

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

res.send(req.query。回调+ '('+ JSON.stringify(obj) + ');';

with

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

#1


42  

just use

只使用

res.jsonp(obj)

you can go ExpressJS JSONP for more info

你可以去ExpressJS JSONP获取更多信息

#2


5  

Try to replace

试图取代

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

res.send(req.query。回调+ '('+ JSON.stringify(obj) + ');';

with

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