Я использую следующий код для извлечения данных с сервера. Но вместо
var jobData = JSON.parse(data);
Получаю
undefined:1
1afcec877d925d110","date":"Mon Jan 06 2014 09:33:13 GMT+0530 (IST)","id":"51",
^
SyntaxError: Unexpected end of input
at Object.parse (native)
код
var options = {
host: '172.16.2.120',
path: '/getModes?mode=' + jobLists,
port: '8080',
method: 'GET'
};
var reqOs = http.request(options, function (resOs) {
resOs.on('data', function (data) {
var jobData = JSON.parse(data);
});
resOs.on('end', function () {
});
});
reqOs.on('error', function (e) {
console.log('problem with request: ' + e.message);
});
reqOs.end('');
Вам необходимо собрать куски данных, переданных обработчику событий data
, и обработать их, когда HTTP-запрос завершен:
var reqOs = http.request(options, function (resOs) {
var chunks = [];
resOs.on('data', function (chunk) {
chunks.push(chunk);
});
resOs.on('end', function () {
var json = Buffer.concat(chunks);
var jobData = JSON.parse(json);
...
});
});
Причина этого в том, что событие data
может быть запущено в середине чтения ответа.
Похоже, что строка JSON, на которую отвечает ваш сервер, недействительна:
1afcec877d925d110","date":"Mon Jan 06 2014 09:33:13 GMT+0530 (IST)","id":"51",
^
Если строка заканчивается так, она недействительна JSON. Проверьте строку JSON, возвращаемую вашим сервером, и попытайтесь сделать ее действительной.
chunks.push(chunk);
отchunks.push(new Buffer(chunk));
иBuffer.concat(chunks);
отBuffer.concat(chunks).toString();
;)