Ваш код почти верен, но в вашем примере кода у вас есть
console.log(data[0].id)
данные объект имеет нет свойство id такесли у вас есть только
console.log(data[0])
, у вас есть ответ типа
{ a: '1' }
, поэтому вы можете получить доступ к свойству a , выполнив
console.log(data[0].a);
ОБНОВЛЕНО Обновлен с полным примером
Еще одна вещь - это то, что вы используете eval , а узел поставляется с JSON.parse комплектом стак вот фрагмент кода ниже, как я заставил его работать
Файл: app.js
var sys = require("sys"),
http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs");
http.createServer(function(request, res) {
var parsed_url = url.parse(request.url);
var uri = parsed_url.pathname;
if(uri === "/test"){
res.writeHead(200, {'Content-Type': 'text/javascript'});
request.addListener('data', function (chunk) {
// removed this - eval("(" + chunk + ")");
var data = JSON.parse(chunk);
console.log(data[0].a);
})
request.addListener('end', function() {
console.log('end triggered');
res.write("Post data");
res.end();
});
} else if(uri === "/") {
fs.readFile("./index.html",function(err, data){
if(err) throw err;
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data);
});
}
}).listen(8080);
В том же каталоге создайте файл index.html со следующим:
<html>
<head>
<script type="text/javascript" charset="utf-8">
var myhttp = new XMLHttpRequest();
var url = "http://localhost:8080/test";
var data = [{"a":"1"},{"b":"2"},{"c":"3"}];
var dataJson = JSON.stringify(data);
myhttp.open('POST', url, true);
myhttp.send(dataJson);
myhttp.onreadystatechange = function() {
if ((myhttp.readyState == 4) && (myhttp.status == 200)){
alert(myhttp.responseText);
}
else if ((myhttp.readyState == 4) && (myhttp.status != 200))
{
console.log("Error in Connection");
}
}
</script>
</head>
<body>
</body>
</html>
Это полный рабочий пример того, что вы хотите.
Относительно тех же проблем с политикой происхождения, которые у вас были, в основном из-за того, что вы не можете POST-данные между двумя разными доменами через ajax, еслиВы используете некоторые трюки с iframes, но это другая история.
Также я думаю, что это хорошо для всехo понять основы технологии, прежде чем переходить к фреймворкам, так что честная игра для вас.
удачи