我试图通过使用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在这上面给出了错误。
请帮帮我 此致
答案 0 :(得分:0)
您是否已经开始使用xmlhttprequest
?由于您使用的是节点,因此有更简单,更清晰的解决方案可以为您提供此功能,例如流行的request库。这是一个可以在更少的代码行中实现所需结果的示例:
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 install request
即可正常运行。如果由于某种原因你需要使用xmlhttprequest让我知道,我会用说明更新这个答案,我想建议一个更简单的方法来实现同样的事情:)
答案 1 :(得分:0)
xmlhttprequest以异步方式工作,因此您的console.log(temp);
将无法正常工作。因为在收到响应之前不会定义临时变量。因此,任何在xhr.send(null);
之后立即打印它的尝试都可能会出错。