XMLHttpRequest
是异步的。您需要使用回调。如果您不想使用成熟的库,我建议使用Quirksmode 的 XHR 包装器:
function callback(xhr)
{
xmlDoc = xhr.responseXML;
// further XML processing here
}
sendRequest('http://www.google.com/ig/api?weather=london&hl=en', callback);
如果您绝对坚持自己实施:
// callback is the same as above
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "http://www.google.com/ig/api?weather=london&hl=en", true);
xmlhttp.onreadystatechange = function ()
{
if (xmlhttp.readyState != 4) return;
if (xmlhttp.status != 200 && xmlhttp.status != 304) return;
callback(xmlhttp);
};
xmlhttp.send(null);
编辑
正如@remi评论的那样:
我想你会得到一个跨域访问异常:你不能向页面之外的其他域发出 ajax 请求。不 ?
这是(大部分)正确的。您需要使用服务器端代理或 Google 提供的任何 API,而不是常规的 XHR。