为什么它不会将JSON返回给浏览器

时间:2012-08-09 20:56:15

标签: javascript node.js

我正在尝试将JSON格式发送到浏览器来显示。 但似乎它不会影响浏览器加上有一个像req.write部分的错误。 访问URL为127.0.0.1:3000/media=video 我可以访问服务器,但它不会将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格式错了。 谢谢。

1 个答案:

答案 0 :(得分:0)

您可能需要向客户端发送正确的 Content-Type 标头。 还response.end() should be called in the end of each response

var body = JSON.stringify(returnJson);

res.writeHead(200, {
  'Content-Length': body.length,
  'Content-Type': 'application/json'
});

res.write(body);
res.end();

此外,如果你的回复主体没有分块,你只能使用方法response.end(),如

res.end(body);