【发布时间】: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 的 <option> 元素?如果是这样,我完全不知道该怎么做。
【问题讨论】:
标签: php json xmlhttprequest google-chrome-extension