#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);