2011-10-11 93 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); 
相关问题