【问题标题】:Chrome Extension - Cross-Origin XMLHttpRequest - Returning HTML/JSONChrome 扩展 - 跨域 XMLHttpRequest - 返回 HTML/JSON
【发布时间】:2011-06-08 21:42:17
【问题描述】:

我希望你能帮助我:) 我创建了一个 Chrome 扩展程序(我的第一个),但在自动填充 <select> 和返回的 <option> 时遇到了一些困难。

default_popup 页面是 index.htm。我有两个<select>(列表框?不记得名字)框。当用户第一次单击扩展时,它会向 php 脚本执行 XMLHttpRequest 并从 MySQL 数据库中获取名称列表。它以以下形式返回(onLoad)列表: <option>blah</option>

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

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

我认为可能是权限错误,所以我尝试将域添加到 manifest.json 文件中;但这样做之后我似乎在 manifest.json 文件中遇到了错误。

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

<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>

这是我的 manifest.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)/"
 },
}

我这样做正确吗?扩展的重点是能够快速查看客户详细信息。扩展名只会以 .crx 文件的形式提供给本地员工,不会在线分发。我通过 PHP/MySQL 访问的域可以从 Web 访问,但我目前在我的 mysql_connect 字符串中使用 localhost。我是否需要返回编码为 JSON 的 &lt;option&gt; 元素?如果是这样,我完全不知道该怎么做。

【问题讨论】:

    标签: php json xmlhttprequest google-chrome-extension


    【解决方案1】:

    使用方括号:

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

    【讨论】:

    • 方括号没有任何作用。我不在任何网页的上下文中工作,扩展在这方面是独立的。我是否朝着正确的方向前进?我不需要将这些代码中的任何一个变成 background.htm 页面或诸如此类的东西?有没有人有任何从后端 php/mysql 脚本读取并将其拉入扩展的示例?我已经看过一些,但显然他们没有把我带到我需要去的地方。
    猜你喜欢
    • 2013-01-11
    • 2012-03-14
    • 2012-04-01
    • 2016-08-28
    • 2012-04-22
    • 2016-09-02
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多