0

我正在尝试将 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 格式是错误的。谢谢你。

4

1 回答 1

0

您可能必须向客户端发送正确的 Content-Type标头。response.end()应该在每个 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);
于 2012-08-09T23:28:08.733 回答