Chrome扩展程序 - 跨源XMLHttpRequest - 返回HTML / JSON

时间:2011-01-14 01:40:12

标签: php json xmlhttprequest google-chrome-extension

我希望你能帮助我:) 我创建了一个Chrome扩展程序(我的第一个扩展程序),并且我在使用<select>自动填充<option>时遇到了一些问题。

default_popup页面是index.htm。我有两个<select>(列表框?不能记住名称)框。当用户首次单击该扩展时,它会对php脚本执行XMLHttpRequest,并获取MySQL数据库中的名称列表。它以下列形式返回(onLoad)列表: <option> {嗒嗒{1}}

当用户从第一个列表框/选择中选择一个选项时,它会执行另一个XMLHttpRequest并自动填充第二个列表框/选择。然后,当用户从第二个列表框中选择一个选项时,最终将在页面下方填充一些详细信息。

我一直在测试只是运行index.htm文件并查看代码是否正常工作,它确实如此。但是,当尝试从扩展程序中查看它时,它不起作用。 onLoad没有填写第一个列表框,并且从第一个列表框中选择一个选项(我在框中输入的用于测试的选项)不会填充第二个列表框。

我想也许是权限错误,所以我尝试将域添加到manifest.json文件中;但是在执行此操作之后,我似乎在manifest.json文件中收到错误。

在我的default_popup(index.htm)文件中,我有这个XMLHttpRequest脚本:

</option>

这是我的manifest.json文件的样子:

<script type="text/javascript">
function getClient(str,type)
{
if (str=="")
  {
  document.getElementById(type).innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById(type).innerHTML=xmlhttp.responseText;
    }
 }
xmlhttp.open("GET","http://(domain removed)/Extension/getInfo.php?q="+type+"&c="+str,true,"user","pass");
xmlhttp.send();
}
</script>

我这样做是否正确?扩展的要点是能够快速查看客户端详细信息。该扩展仅在本地员工的.crx文件中提供,而不是在线分发。我通过PHP / MySQL访问的域可以从Web访问,但我目前在我的mysql_connect字符串中使用localhost。我是否需要返回编码为JSON的{ "name": "Client Center Lite", "version": "1.0", "description": "blah", "browser_action": { "default_icon": "images/icon_19.png", "default_popup": "index.htm", "default_title": "Client Center Lite" }, "icons":{ "128":"images/icon_128.png" } "permissions": { "http://(domain removed)/" }, } 元素?如果是这样的话,那我就完全没有线索了。

1 个答案:

答案 0 :(得分:0)

使用方括号:

"permissions": [
  "http://(domain removed)/"
],