在javascript函数外部使用变量

在javascript函数外部使用变量,javascript,node.js,xmlhttprequest,Javascript,Node.js,Xmlhttprequest,我试图通过使用node.js的xmlhttprequest从网页获取html。我在互联网上找到的代码是: var sys = require ('sys'), url = require('url'), XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest, http = require('http'), qs = require('querystring'); http.createServer(function (req, res

我试图通过使用node.js的xmlhttprequest从网页获取html。我在互联网上找到的代码是:

var sys = require ('sys'),
url = require('url'),
XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest,
http = require('http'),
qs = require('querystring');
http.createServer(function (req, res) {
    var temp        
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
        var loc = xhr.responseText.search("Right Now");
        temp = xhr.responseText.substr(loc,loc+10);
        //console.log(temp);
        }
    }
xhr.open('GET', 'http://www.weather.com/weather/today/37.229572,-80.413940', true);
xhr.send(null);
console.log(temp);
res.write("pappu\n");
res.end();
}
).listen(80);
我想在函数外部使用xhr.responseText,但我无法这样做。我尝试过不使用var和temp使其全局化,但node.js给出了错误信息

请帮帮我
问候

您是否已经下定决心要使用
xmlhttprequest
?由于您使用的是node,因此有更简单、更干净的解决方案可以为您包装此功能,如流行的库。下面是一个示例,它可以用更少的代码行实现您想要的结果:

var request = require('request');
request.get('http://www.weather.com/weather/today/37.229572,-80.413940', callback);

function callback(err, res){
  if (err) return console.error(err);
  console.log(res.body);
}

您所要做的就是运行
npm安装请求
,使其正确运行。如果出于某种原因您需要使用xmlhttprequest,请告诉我,我将用说明更新此答案,我想我会建议一种更简单的方法首先实现相同的目标:)

xmlhttprequest异步工作,因此您的
console.log(temp)将无法按预期工作。因为在收到响应之前不会定义temp变量。因此,在
xhr.send(null)之后立即打印它的任何尝试可能会出错。

谢谢杰夫。这对我来说没问题,但问题仍然是一样的,我如何在函数内部写它作为响应,还是在函数外部得到它的值。。????是的。。我对使用node.js和JavaScript一成不变。他没有建议不使用node或JavaScript。更新了答案,找到了将响应移动到新范围的最简单方法。由于ajax函数是异步的,因此必须在某个函数中处理响应。这是你能得到的最干净的了。我写了一篇关于函数和异步的详细解释,这可能会帮助您更好地理解这些东西是如何工作的:)