Расширение Chrome - перекрестное происхождение XMLHttpRequest - возврат HTML / JSON - PullRequest
0 голосов
/ 14 января 2011

Надеюсь, вы мне поможете :) Я создал расширение Chrome (мое первое) и у меня возникли трудности с автоматическим заполнением <select> на <option>, которые возвращаются.

Страница default_popup - index.htm.У меня есть два <select> (списки? Не могу вспомнить имя) коробки.Когда пользователь впервые щелкает расширение, он выполняет запрос XMLHttpRequest для сценария php и получает список имен из базы данных MySQL.Он возвращает (onLoad) список в виде: <option> бла </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, доступен из Интернета, но в настоящее время я использую localhost в моей строке mysql_connect.Нужно ли возвращать <option> элементы, закодированные как JSON?Если это так, я совершенно не знаю, как это сделать.

1 Ответ

0 голосов
/ 14 января 2011

Используйте квадратные скобки:

"permissions": [
  "http://(domain removed)/"
],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...