2017-08-30 172 views
0

該函數應該在一切正常時返回數據,並在收到404錯誤時返回0。http處理404錯誤

function httpGet(url) 
    { 
     if (window.XMLHttpRequest) 
     { 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else 
     { 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange=function() 
     { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
       return xmlhttp.responseText; 
      } 
      if(xmlhttp.readyState==4 && xmlhttp.status==404) 
      { 
       return 0; 
      } 
     } 
     xmlhttp.open("GET", url, false); 
     xmlhttp.send();  
    } 

例如,

username = '_ele'; 
httpGet('https://api.scratch.mit.edu/users/'+username+'/followers'); 

將拋出一個404錯誤,但我希望函數可以返回值0,而不是,怎麼辦呢?

回答

1

你可以試試這個版本

function httpGet(url) 
    { 
     if (window.XMLHttpRequest) 
     { 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else 
     { 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     xmlhttp.open("GET", url, false); 
     xmlhttp.send();  
     if (xmlhttp.status != 200) { 
      // catch error 
      return xmlhttp.status + ': ' + xmlhttp.statusText; // expample error: 404: Not Found 
     } else { 
      // response 
      return xmlhttp.responseText; 
     } 
    } 
+0

https://jsfiddle.net/dfrhh6kw/控制檯還拋出404錯誤,我能做些什麼呢? –

+0

U也會在控制檯收到錯誤,但是你的代碼在jsfiddle中工作(我收到警報505),之後如果重寫'return xmlhttp.status +':'+ xmlhttp.statusText;'''return「ook」'我收到alert與文字'ook' – AkeRyuu