Сбой запроса AJAX в расширении Chrome с правильными разрешениями манифеста? - PullRequest
2 голосов
/ 30 марта 2012

Я пишу расширение Chrome, которое выполняет простой ajax-вызов (на основе этого примера из документов):

$.ajax({
    type: "GET",
    url: "http://www.flags.99k.org/getFlags.php"
}).done(function(response) {
    alert("SUCCESS: " + response);
}).fail(function(response) {
    alert("FAILURE: " + response);
});

Запрос всегда терпит неудачу, потому что предупреждение показывает: FAILURE: [object Object].
URL-адрес действителен: Когда я помещаю http://www.flags.99k.org/getFlags.php в адресную строку, я получаю это:

[{"UID": "1", "Message": "Hello"}, {"UID": "2", "Message": "World"}, {"UID": "3", "Message": "Hello World"}]

Вот мой манифест.json для расширения.

{
  "name": "Hello World",
  "version": "1.0",
  "description": "The first extension that I made.",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
      "http://www.flags.99k.org/"
  ]
}

Я использую Chromium 17.0.963.79 (Developer Build 125985 Linux) Ubuntu 11.10.

Ответы [ 3 ]

5 голосов
/ 30 марта 2012

В настоящее время разрешен доступ только к корневому каталогу через разрешения в манифесте.Вы должны добавить подстановочный знак после URI к разрешениям:

  "permissions": [
    "http://www.flags.99k.org/*"
  ]

См. Также: Шаблоны совпадений .

РЕДАКТИРОВАТЬ: Обновленный код не работает, поскольку http://www.flags.99k.org/ перенаправляет на http://flags.99k.org/ (без www).Итак, также внесите в белый список это местоположение:

  "permissions": [
    "http://flags.99k.org/*",
    "http://www.flags.99k.org/*"
  ]
1 голос
/ 30 марта 2012

Вместо того, чтобы делать ...

alert("FAILURE: " + response);  

... делать ...

console.debug('FAILURE');
console.debug(response);

Тогда, если вы идете в консоль (ctrl-shift-j на окнах)вы увидите объект, который вы можете развернуть, чтобы увидеть все его свойства, а что нет, это действительно может помочь.Плюс вы смотрели на консоль при выполнении запроса?Там могут появиться сообщения об ошибках.

0 голосов
/ 30 марта 2012

Это может быть междоменная проблема.

Когда вы вводите URL в адресную строку, он работает, потому что он доставляется в ваш браузер с хоста.

Поскольку вы пытаетесьнажмите полный URL-адрес за пределами вашего размещенного домена - вам может понадобиться использовать JSONP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...