0
我想發送JSON格式的瀏覽器來顯示。 但它似乎不會瀏覽器加上有像req.write部分的錯誤。 訪問網址是127.0.0.1:3000/media=video 我可以訪問服務器,但它不會返回JSON到瀏覽器。爲什麼它不會返回JSON到瀏覽器
var http = require('http');
var recommandCat=['top5','newest','like','random','recommened'];
var url =require('url');
http.createServer(function (req, res) {
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
var returnJson="";
console.log(query.media);
switch (query.media)
{
case 'photo':
returnJson=photoGenerator();
break;
case 'video':
returnJson=videoGenerator();
break;
case 'audio':
returnJson=audioGenerator();
}
console.log(returnJson);
res.write(returnJson);
}).listen(3000, '127.0.0.1');
function videoGenerator()
{
var jsonArray = new Array();
for(i=0;i<10;i++)
{
var data = new Object();
var recoCat = recommandCat[Math.floor(Math.random()*4)];
data = {
tomEngine:{
mediaType:"video",
recommendset:[
{recommendCat:"+recoCat+",
recommendResult:[
{
mediaId:"",
mediaEntry:[{
user1:{
name:"sooin",
rating:"3",
views:"2",
like:"ture",
comment:"good"
},
user2:{
name:"sara",
rating:"1",
views:"4",
like:"ture",
comment:"good!"
}
}],
view:"4",
rating:"4",
like:"10",
attribute:{
smallUrl:"www",
largeUrl:"llll",
title:"aaaa"
},
}]
}
]
}
};
jsonArray.push(data);
}
return jsonArray;
}
也許我的json格式是錯誤的。 謝謝。
貫穿你的輸出:http://jslint.com/它會告訴你你錯過了什麼。對於初學者來說,名稱值對中的所有名稱都需要在它們周圍加雙引號。 – scrappedcola 2012-08-09 21:01:26
'JSON.stringify(returnJSON)'看起來你需要在調用'res.write'之前將它編碼爲字符串。 – 2012-08-09 21:03:18
@ S.Albano是正確的,http服務器不會自動將javascript對象轉換爲json。你必須手動編碼它們。我會把這個問題作爲對OP問題的回答。 @draford,你也錯過了'res.end()'。如果不調用它,服務器將永遠不會關閉連接(直到瀏覽器發生超時)。 – travis 2012-08-09 21:55:50