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

why does it not return JSON to browser

本文关键字:返回 浏览器 JSON 为什么      更新时间:2023-09-26

>我正在尝试将JSON格式发送到浏览器以显示。但似乎它不会流浪,而且有一个错误,如 req.write 部分。访问网址为 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 格式是错误的。谢谢。

您可能必须将正确的 Content-Type 标头发送到客户端。此外,应该在每个响应的末尾调用 response.end()。

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);