2013-08-14 4 views
14

node.js로 삼성 스마트 TV 앱을 만들려고합니다.jsonp with node.js express 사용 방법

내 프로젝트에서 내 앱을 서버 pc와 통신하고 싶습니다.

많은 웹 사이트에 따르면, 나는 "jsonp"로 이것을 할 수 있습니다.

다음은 내가 발견 한 클라이언트 측 코드입니다.

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

는 그리고, 여기에 내가 발견 서버 측 코드입니다.

이 코드는 내 PC (서버 PC)에서 작동하지만 다른 컴퓨터에서 클라이언트 페이지를 열면 작동하지 않습니다.

콘솔은 나에게이 로그 제공 : 내가 해결하기 위해 할 수있는 일

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

내가 크로스 도메인을 처리하기 위해 JSONP 사용하고자하지만, 내가 생각 작동하지 않습니다 ...

을 이?

제게 도와주세요!

+1

을위한 ExpressJS JSONP 갈 수

res.jsonp(obj) 

를 사용 다른 사람의 컴퓨터가 귀하의 컴퓨터에 연결할 수 있는지 확인하십시오 (동일한 네트워크, Ping 등)? – arghbleargh

+0

@arghbleargh 의견을 주셔서 감사합니다 !! 나는 다른 사람들이 내 서버에 접근 할 수 있는지 확인했다 ... – newbeeep

+0

네트워크 관리자를보고 요청과 응답이 무엇인지 살펴 본다. – arghbleargh

답변

36

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

을 대체하는 당신이 더 많은 정보

+0

express에 $ .getJSON 및 recv a json을 통해이 작업을 수행 할 수 있습니다. 같은 페이지에 대한 응답? response.jsonp를 사용하여이 작업을 수행하면 새 페이지에 결과가 표시됩니다. – user2290820

+0

수행하려는 작업이 명확하지 않습니다. 질문이 있으시면, @ user2290820 –

+0

으로 질문을 올리시겠습니까? 질문 : https://stackoverflow.com/questions/31891606/receive-ajax-post-back-on-client-from-express-without-reload – user2290820

5

시도

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

당신이 객체를 stringify 할 필요가 있다고 생각하지 않는다. res.jsonp()를 사용한다면 콜백으로 감싼다. – rob

+1

'callback' URL 매개 변수를 통해 스크립트 주입을 할 수 있기 때문에 안전하지 않다. js-string-escape를 사용하여 콜백 매개 변수 값을 먼저 이스케이프해야합니다. https://www.npmjs.com/package/js-string-escape – Nivco