2013-08-14 22 views
14

node.js ile Samsung Smart TV uygulamasını yapmaya çalışıyorum.node.js express ile jsonp nasıl kullanılır

Projemde, uygulamanızı sunucu pc ile iletişim kurmak istiyorum.

Birçok Web sitesine göre, bunu "jsonp" ile yapabilirim.

Burada bulduğum bir istemci yan kodu var.

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

Ve burada buldum bir sunucu tarafı kodudur.

Bu kodlar benim pc (sunucu pc) üzerinde çalışıyoruz, ama diğerleri bilgisayarda istemci sayfasını açtığınızda, bu işe yaramaz.

Konsol bana bu günlüğü vermek i düzeltmek için ne yapabilirim

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

Ben alanlar arası işlemek için jsonp kullanmak istiyorum, ama bu bence çalışmıyor ...

bu?

Lütfen bana yardım edin!

+1

için ExpressJS JSONP gidebilir

res.jsonp(obj) 

kullanmak Diğer kişinin bilgisayarının sizinkilere ulaşabileceğinden (aynı ağda, ping gibi) emin misiniz? – arghbleargh

+0

@arghbleargh Yorumunuz için teşekkürler! ve ben kontrol ettim ... diğerleri sunucuma ulaşabilir ... – newbeeep

+0

Ağ denetçisine bakıp isteklerin ve yanıtların neler olduğunu görmeyi deneyin. – arghbleargh

cevap

36

ile

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

yerine sadece daha fazla bilgi

+0

ekspres bunu $ .getJSON üzerinden yapmak ve bir json rec mümkün aynı sayfada cevap? Response.jsonp kullanarak bunu yapmak, sonucu yeni bir sayfa oluşturur – user2290820

+0

Ne yapmaya çalıştığınız net değil. Eğer @ user2290820 –

+0

ayrıntıları ile soru olarak göndermek isterseniz lütfen soru şu: https://stackoverflow.com/questions/31891606/receive-ajax-post-back-on-client-from-express-without-reload – user2290820

5

deneyin

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

Res.jsonp() – rob

+1

kullanılıyorsa, nesneyi dizgiye almanız ve geri çağırma ile sarmanız gerektiğini düşünmüyorum. Bu, "geri alma" URL parametresi aracılığıyla Komut Dosyası enjeksiyonu yapabileceğiniz gibi güvenli değil. Önce js-string-escape kullanarak geri arama parametresi değeri kaçmak gerekir: https://www.npmjs.com/package/js-string-escape – Nivco

İlgili konular