2012-02-18 23 views
9

Tôi đã chơi xung quanh với API youtube và node.js, cho đến nay tôi đã có thể nhận được phản hồi từ API và console.log nó trên thiết bị đầu cuối .nút js - Tôi đang gặp một số sự cố với JSON.parse()

Khi tôi cố gắng để có được sự hưởng ứng và sử dụng JSON.parse, tôi nhận được một lỗi lạ:

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) 

Đây là kịch bản của tôi:

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

Giá trị của queryResponse trước khi bạn cố gắng phân tích cú pháp đó là gì? – Dogbert

+0

nó in [this] (http://gdata.youtube.com/feeds/api/videos?q=cats&max-results=1&v=2&alt=json) trên thiết bị đầu cuối nếu tôi đăng nhập. CHỈNH SỬA: phiên bản dễ đọc hơn - http://gdata.youtube.com/feeds/api/videos?q=cats&max-results=1&v=2&alt=json&prettyprint=true – user1215653

Trả lời

14

Biến queryResponse được thiết lập để undefined và bạn đang thực hiện queryResponse += chunk trong trình xử lý dữ liệu 'dữ liệu' có nghĩa là queryResponse = queryResponse + chunk để bạn nhận được

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

bạn có thể khắc phục bằng cách khởi tạo queryResponse dưới dạng một chuỗi trống var queryResponse = ''

+0

oh! Tôi biết nó là một cái gì đó đơn giản ... cảm ơn bạn! – user1215653

+0

Đó là một quy ước tốt để kiểm tra loại dữ liệu trước khi chuyển nó sang phân tích cú pháp quá. –

+0

cảm ơn mister, điều này thực sự đơn giản để sửa chữa, bạn chỉ cần ghim điểm những gì đang xảy ra. – SKYnine

Các vấn đề liên quan