2011-10-11 53 views
1

意外的標識錯誤,我適應了XMLHttpRequestthis tutorial的Javascript未捕獲的語法錯誤:在Chrome中調試

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調試器會在else一個Uncaught SyntaxError: Unexpected identifier錯誤。我究竟做錯了什麼?謝謝!

回答

2

您錯過了else之前的關閉}以及開頭{以及if-else語句中的其他人。

它適用於您的教程代碼,因爲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); 
相關問題