0
브라우저에 JSON 형식을 보내려합니다. 하지만 그것은 broweser 플러스 req.write 부분과 같은 오류가 발생하지 않을 것 같습니다. 액세스 URL은 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 형식이 잘못되었을 수 있습니다. 감사합니다.
같은 유일한 방법으로 Response.End()를 사용할 수 있습니다 http://jslint.com/과 당신이 누락 된 것을 보여줄 것입니다. 처음에는 이름 값 쌍의 모든 이름이 주위에 큰 따옴표가 있어야합니다. – scrappedcola
'JSON.stringify (returnJSON)''res.write'를 호출하기 전에 문자열로 인코딩해야 할 것 같습니다 –
@ S.Albano가 정확합니다. http 서버는 javascript 객체를 자동으로 json으로 변환하지 않습니다. 수동으로 인코딩해야합니다. 나는 그것이 OP가 무엇인지에 관해 그 질문에 대한 대답으로 그것을 제출할 것이다. @draford, 당신도'res.end()'가 없습니다. 전화하지 않으면 서버가 연결을 종료하지 않습니다 (브라우저에서 시간이 초과 될 때까지). – travis