2012-02-18 24 views
9

के साथ कुछ परेशानी हो रही है। मैं यूट्यूब एपीआई और नोड.जेएस के साथ खेल रहा हूं, अब तक मैं एपीआई और console.log टर्मिनल पर प्रतिक्रिया प्राप्त करने में सक्षम हूं ।नोड जेएस - मुझे JSON.parse()

Got response: 200 

undefined:1 
http://www.w3.or 
^ 
SyntaxError: Unexpected token u 
    at Object.parse (native) 
    at IncomingMessage.<anonymous> (/home/ubuntu/node_temp4/index.js:19:10) 
    at IncomingMessage.emit (events.js:88:20) 
    at HTTPParser.onMessageComplete (http.js:137:23) 
    at Socket.ondata (http.js:1137:24) 
    at TCP.onread (net.js:354:27) 

यह मेरी स्क्रिप्ट है:

जब मैं प्रतिक्रिया मिल और JSON.parse इस्तेमाल करने की कोशिश, मैं एक अजीब त्रुटि मिलती है

var http = require("http"); 

var searchQuery = "cats"; 
var queryResponse; 

var options = { 
    host: 'gdata.youtube.com', 
    path: "/feeds/api/videos?q=" + searchQuery + "&max-results=1&v=2&alt=json" 
}; 

http.get(options, function(response) { 
    console.log("Got response: " + response.statusCode); 

    response.on('data', function(chunk){ 
    queryResponse += chunk; 
    }); 

    response.on('end', function(){ 
    JSON.parse(queryResponse); 
    console.log('end'); 
    }); 
}).end(); 
+2

इससे पहले कि आप पार्स करने के लिए कोशिश queryResponse का मूल्य क्या है के रूप में queryResponse instantiating करके इसे ठीक कर सकते हैं? – Dogbert

+0

अगर मैं इसे लॉग करता हूं तो टर्मिनल पर यह [http://gdata.youtube.com/feeds/api/videos?q=cats&max-results=1&v=2&alt=json) प्रिंट करता है। संपादित करें: एक और पठनीय संस्करण - http://gdata.youtube.com/feeds/api/videos?q=cats&max-results=1&v=2&alt=json&prettyprint=true – user1215653

उत्तर

14

चर queryResponseundefined पर सेट है और आप कर रहे हैं 'डेटा' में हैंडलर को queryResponse += chunk का अर्थ है queryResponse = queryResponse + chunk ताकि आपको

undefined{"youtube":["Api", "response"]} 

आप एक खाली स्ट्रिंग var queryResponse = ''

+0

ओह! मुझे पता था कि यह कुछ आसान था ... धन्यवाद! – user1215653

+0

यह पार्स को पास करने से पहले डेटा के प्रकार की जांच करने के लिए एक अच्छा सम्मेलन है। –

+0

धन्यवाद मिस्टर, यह ठीक करने के लिए वास्तव में आसान था, आपको बस यह तय करना होगा कि क्या हो रहा है। – SKYnine

संबंधित मुद्दे