从URLparsingJSON数据

我正在试图创build一个可以parsing来自url的JSON的函数。 以下是我到目前为止:

function get_json(url) { http.get(url, function(res) { var body = ''; res.on('data', function(chunk) { body += chunk; }); res.on('end', function() { var response = JSON.parse(body); return response; }); }); } var mydata = get_json(...) 

当我调用这个函数时,我得到错误。 我怎样才能从这个函数返回parsing的JSON?

您的return response; 将不会有任何用处。 您可以将一个函数作为parameter passing给get_json ,并让它接收结果。 然后取代return response; ,调用该函数。 所以如果参数名为callback ,你会做callback(response);

 // ----receive function----v function get_json(url, callback) { http.get(url, function(res) { var body = ''; res.on('data', function(chunk) { body += chunk; }); res.on('end', function() { var response = JSON.parse(body); // call function ----v callback(response); }); }); } // -----------the url---v ------------the callback---v var mydata = get_json("http://webapp.armadealo.com/home.json", function (resp) { console.log(resp); }); 

传递函数作为callback是了解使用NodeJS时必不可less的。

HTTP调用是asynchronous的,所以你必须使用callback才能获取结果值。 asynchronous函数中的return调用将停止执行。

 function get_json(url, fn) { http.get(url, function(res) { var body = ''; res.on('data', function(chunk) { body += chunk; }); res.on('end', function() { var response = JSON.parse(body); fn(response); }); }); }; get_json(url, function(json) { // the JSON data is here }); 

在这个例子中, function(json) {}作为函数fn()传递给函数get_json() ,当数据准备就绪时, fn()被调用,允许你获取JSON。

如果有人正在寻找一个不涉及callbaks的解决scheme

  function getJSON(url) { var resp ; var xmlHttp ; resp = '' ; xmlHttp = new XMLHttpRequest(); if(xmlHttp != null) { xmlHttp.open( "GET", url, false ); xmlHttp.send( null ); resp = xmlHttp.responseText; } return resp ; } 

那么你可以像这样使用它

 var gjson ; gjson = getJSON('./first.geojson') ;