从发布数据解析Nodejs中的JSON时出错

时间:2012-08-18 07:32:48

标签: json node.js jquery http-headers

我已经使用这个jquery ajax代码来传递JSON:

var jsonObjects = [{id:1, name:"amit"}];

$.ajax({
 type: 'GET',
 url: 'http://localhost:8080',
 data: {
     jsonData: JSON.stringify(jsonObjects)
   },
   dataType: 'json',
   complete: function(validationResponse) {
  }
});

我已使用此节点js代码来解析JSON数据:

http.createServer(function (request, response) {
response.writeHeader(200, {
    "Content-Type": "text/plain"
});
 response.writeHead(200, {"Content-Type":"text/plain"});

  var theUrl = url.parse(request.url);
  var queryObj = queryString.parse( theUrl.query );
  var obj = JSON.parse( queryObj.jsonData);
  console.log(obj[0].id)
 response.write(String(obj[0].id))
   response.end();
}).listen(8080,'127.0.0.1');    

但它在控制台中显示以下错误:

undefined:1
rn┴P║Eee
^
SyntaxError: Unexpected token u
at Object.parse (native)
at Server.<anonymous> (C:\node\nodejs\node_modules\17-8-12\tracker.js:79:22)

at Server.emit (events.js:70:17)
at HTTPParser.onIncoming (http.js:1610:12)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:91:29)

at Socket.ondata (http.js:1506:22)
at TCP.onread (net.js:374:27)

然后代码停止..

2 个答案:

答案 0 :(得分:1)

本节:

response.writeHeader(200, {
  "Content-Type": "text/plain"
});
response.writeHead(200, {"Content-Type":"text/plain"});
似乎是乱码:这是你真正的代码吗?如果是这样,请删除前三行。如果这不能解决问题,请先console.log request.url,然后queryObj.jsonData,看看它们是否合理。

答案 1 :(得分:0)

这不是您问题的直接答案,但我建议您查看ExpressbodyParser中间件。

他们可以做以下事情:

var express = require('express');
var app = express();

app.get('/', function(req, res){
  console.log(req.query.jsonData);
  res.send('return data here');
});

app.listen(8080);