Javascript switch语句未定义错误

时间:2011-12-21 11:10:44

标签: javascript ajax google-chrome-extension

我在Google Chrome扩展程序中排除了这个AJAX请求;它在chrome控制台中记录错误:

Uncaught Error: Invalid value for argument 1. Expected 'object' but got 'string'. - extensions/extension_process_bindings.js:66

chromeHidden.validate - extensions/extension_process_bindings.js:66

(anonymous function) - extensions/extension_process_bindings.js:622

xmlhttp.onreadystatechange - popup.html:362

虽然我的代码中只有其中一个错误,但我认为这是本节(标记的行已标记)

var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    if (xmlhttp.responseText != 0)
      {
      chrome.browserAction.setBadgeText(xmlhttp.responseText); // LINE 362 - FINAL ERROR
      chrome.browserAction.setBadgeBackgroundColor(255,0,0,255);
      document.getElementById("alerts").innerHTML = xmlhttp.responseText;
      }
    }
  }
xmlhttp.open("GET","http://adams-site.x10.mx/checkalerts.php?

day="+dayname,true);
xmlhttp.send();
}

3 个答案:

答案 0 :(得分:4)

根据sample from the Chrome extension siteand the API),您需要传递一个对象(错误建议)而不是传递文本。

来自样本:

chrome.browserAction.setBadgeText({text:String(i)});

你很可能只需要:

chrome.browserAction.setBadgeText({text: xmlhttp.responseText });

答案 1 :(得分:2)

调用setBadgeText函数(http://code.google.com/chrome/extensions/browserAction.html

的错误方法
chrome.browserAction.setBadgeText({text: xmlhttp.responseText});

应该有效。同样适用于setBadgeBackgroundColor btw。

答案 2 :(得分:2)

chrome.browserAction.setBadgeText需要Object而非String(如错误消息所示)。这是documentation的链接。尝试将代码更改为:

chrome.browserAction.setBadgeText({
    text: xmlhttp.responseText
});