2010-12-19 149 views
2

我正在做一个Firefox扩展,我一直试图从几个需要获取数据的站点获取响应文本。不知道为什么我在这里没有收到任何数据。XMLHttpRequest没有响应

下面就来测试一下从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提取数据,但是当我尝试这样做时,没有任何内容显示在警报中。

回答

1

首先我会在拨打电话时做相反的事情。

try { 
    AJAX = new ActiveXObject("Microsoft.XMLHTTP"); // Try Internet Explorer 
} 
catch(e) // Failure then it is something else. 
{ 
    AJAX = new XMLHttpRequest(); 
} 

然后我也因为你想要的readyState和状态,没有或者你把它改变你得到答案的方式。

AJAX.onreadystatechange = function() 
{ 
    var xhrdata = ""; 
    if(AJAX.readyState == 4) 
    { 
      if(AJAX.status == 200) 
      xhrdata = AJAX.responseText; 
      else 
      xhrdata = AJAX.status; 
    } 
}; 

你也可以尝试事件试一试,并抓住(e)发送服务器错误消息。 你也可以用回调函数替换xhrdata。

+0

你也可以用“&&”代替“||” – karlcow 2011-01-26 23:09:06