2014-01-17 3 views
0

Я следующий пример кода (я совершенно новой для nodejs), код выглядит следующим образом:nodejs .map() на загруженном содержимом

var http = require('http'); 
    var fetchurl = 'http://localhost/sampledata.php'; 
    http.get(fetchurl, function(res) { 
    var body = ''; 

    res.on('data', function(chunk) { 
     body += chunk; 
    }); 

    res.on('end', function() { 
     var Response = body; 

     Response.map(function(ent,i){console.log(ent.name);}); 
     console.log("Got response: ", Response.toString()); 
    }); 
}).on('error', function(e) { 
     console.log("Got error: ", e); 
}); 

Приведенный выше код загружает некоторые данные из файла sampledata.php которая выглядит следующим образом:

[{ name : 'david' , age : '25' } , { name : 'Henry' , age : '22' },{ name : 'Tom' , age : '15' },{ name : 'salena' , age : '35' }]; 

проблема заключается в том, что, когда я запускаю верхний код, я получаю сообщение об ошибке:

Type Error: Object (name: 'david', age:'25') has no method `map` 

но гр журнал onsole хорошо отображает данные, также если я использую одни и те же данные, не загружая их из URL, он отлично работает.

Неправильный телефон?

ответ

0

Вам нужно сначала преобразовать корпус в JSON.

Я обычно имеют функцию, как следующее, чтобы поймать любые ошибки:

function tryParseJson(str) { 
    try { 
     return JSON.parse(str); 
    } catch (ex) { 
     return null; 
    } 
} 

, а затем измените строку следующим образом:

var Response = tryParseJson(body); 
+0

, которые не работали, я все еще получаю ту же ошибку ! – Ahsan

+0

Можете ли вы добавить console.log («body is% j», body) прямо перед вызовом карты. Я предполагаю, что «тело» на самом деле не массив. – Pat

+0

Я сделал это, журнал: тело is [{имя: 'david', возраст: '25'}, {имя: 'Henry', возраст: '22'}, {name: 'Jay ', age:' 35 '}, {name:' matt ', age:' 45 '}, {name:' self ', age:' testing ']; – Ahsan

Смежные вопросы