Javascript Uncaught SyntaxError: неожиданная ошибка идентификатора в отладчике Chrome

#javascript #google-chrome

#javascript #google-chrome

Вопрос:

Я адаптирую XMLHttpRequest из этого руководства:

 var request = new XMLHttpRequest();  
request.open('GET', 'http://www.mozilla.org/', true);  
request.onreadystatechange = function (aEvt) {  
  if (request.readyState == 4) {  
     if (request.status == 200)  
       console.log(request.responseText)  
     else  
       console.log('Error', request.statusText);  
  }  
};  
request.send(null);
  

Мой код:

 var xhr = new XMLHttpRequest();
xhr.open("POST", "http://ting-1.appspot.com/submithandlertest", true);
xhr.onreadystatechange = function (aEvt) {
  if (xhr.readyState == 4) {
      if (xhr.status == 200) 
          console.log("request 200-OK");
          chrome.browserAction.setBadgeText ( { text: "done" } );
      else
          console.log("connection error");
          chrome.browserAction.setBadgeText ( { text: "ERR" } );
      setTimeout(function () {
      chrome.browserAction.setBadgeText( { text: "" } );
      }, 2000);
  }        
}        
xhr.send(formData);
  

Но отладчик Chrome выдает Uncaught SyntaxError: Unexpected identifier ошибку на else . Что я делаю не так? Спасибо!

Ответ №1:

Вам не хватает закрытия } до и открытия { после else, а также других в вашем if-else — statement .

Это работает в вашем учебном коде, потому что в инструкции if-else есть только одна строка. При наличии нескольких строк вы должны правильно их блокировать. (Я лично рекомендую делать это всегда, даже если есть только одна строка кода. На мой взгляд, это улучшает читаемость, и у вас не возникнет проблем, когда однажды вы решите сократить свой код)

Попробуйте это:

 var xhr = new XMLHttpRequest();
xhr.open("POST", "http://ting-1.appspot.com/submithandlertest", true);
xhr.onreadystatechange = function (aEvt) {
  if (xhr.readyState == 4) {
      if (xhr.status == 200){
          console.log("request 200-OK");
          chrome.browserAction.setBadgeText ( { text: "done" } );
      }else{
          console.log("connection error");
          chrome.browserAction.setBadgeText ( { text: "ERR" } );
      setTimeout(function () {
      chrome.browserAction.setBadgeText( { text: "" } );
      }, 2000);
    }
  }        
};    
xhr.send(formData);