从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') ;