我正在开发一个Firefox扩展程序,我一直试图从我需要从中获取数据的几个站点获取响应文本。不知道为什么我这里没有得到任何数据。
以下是测试Quantcast.com的XHR请求的代码:
function callback(serverData) {
alert(serverData);
}
function ajaxRequest() {
var AJAX = null;
if (window.XMLHttpRequest) {
AJAX=new XMLHttpRequest();
} else {
AJAX=new ActiveXObject("Microsoft.XMLHTTP");
}
if (AJAX==null) {
alert("Your browser doesn't support AJAX.");
return false
}
AJAX.onreadystatechange = function() {
if (AJAX.readyState==4 || AJAX.status==200) {
callback(AJAX.responseText);
}
}
var url='http://www.quantcast.com/facebook.com';
AJAX.open("GET", url, true);
AJAX.send(null);
}
这里缺少什么东西吗?我知道通过XHR通过Quantcast提取数据的其他扩展,但是当我尝试这样做时,没有任何内容出现在警报上。
答案 0 :(得分:1)
首先,我打电话时会反其道而行之。
try {
AJAX = new ActiveXObject("Microsoft.XMLHTTP"); // Try Internet Explorer
}
catch(e) // Failure then it is something else.
{
AJAX = new XMLHttpRequest();
}
然后我也会改变你得到答案的方式,因为你想要readyState和status,而不是你想要的。
AJAX.onreadystatechange = function()
{
var xhrdata = "";
if(AJAX.readyState == 4)
{
if(AJAX.status == 200)
xhrdata = AJAX.responseText;
else
xhrdata = AJAX.status;
}
};
你可以尝试事件并捕获(e)在服务器错误上发送消息。 你也可以用回调函数替换xhrdata。