Расширение Chrome: как передать переменную из скрипта содержимого в background.html - PullRequest
0 голосов
/ 13 января 2011

Я не могу понять, как передать переменную (или массив переменных) из скрипта содержимого на фоновую страницу. Я пытаюсь найти определенные элементы DOM с помощью моего скрипта контента, а затем отправить их на мою фоновую страницу, чтобы я мог создать для них междоменный запрос XMLHttpRequest (сохранить их в базе данных на другом сайте). *

Мой код ниже. Я знаю, что переменная с именем "serialize" не передается (и я не ожидаю, что она будет основана на моем текущем коде, но она там есть, чтобы было легче увидеть, что я хочу сделать.) Так как я могу передать переменная из скрипта контента на фоновую страницу?

Мой контент Сценарий:

function onText(data) {
alert("Great Success!!");
};
$("#insertprofile").click(function(){
serialize = $(".certaininputs").serialize();
chrome.extension.sendRequest({'action' : 'insertprofile', 'serialize' : serialize}, onText);
});

Моя фоновая страница:

   <script>
      function insertprofile(serialize) {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function(data) {
          if (xhr.readyState == 4) {
            if (xhr.status == 200) {
              var data = JSON.parse(xhr.responseText);
              callback(data);
            } else {
              callback(null);
            }
          }
        }
        var url = ('http://mysite.com/storeindatabase.php?' + serialize);
        xhr.open('GET', url, true);
        xhr.send();
      };
      function onRequest(request, sender, serialize) {
        if (request.action == 'insertprofile') {
          insertprofile(serialize);
        }
      };
      chrome.extension.onRequest.addListener(onRequest);
    </script>

Ответы [ 3 ]

1 голос
/ 13 декабря 2012

Вы пропустили "...php?serialize=' + serialize)" в этом коде:

var url = ('http://mysite.com/storeindatabase.php?' + serialize);

Это должно быть так:

var url = ('http://mysite.com/storeindatabase.php?serialize=' + serialize);
0 голосов
/ 14 января 2011

Я думаю, что ваша ошибка - доступ к сериализации вместо request.serialize.

function insertprofile(serialize) {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function(data) {
          if (xhr.readyState == 4) {
            if (xhr.status == 200) {
              var data = JSON.parse(xhr.responseText);
              callback(data);
            } else {
              callback(null);
            }
          }
        }
        var url = ('http://mysite.com/storeindatabase.php?' + serialize);
        xhr.open('GET', url, true);
        xhr.send();
      };


chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  if (request.action == 'insertprofile') {
          insertprofile(request.serialize);
          sendResponse({});
  }

});
0 голосов
/ 13 января 2011

Вы имеете в виду:

chrome.extension.sendRequest({'action' : 'insertprofile', 'serialize': serialize}, onText);

?

РЕДАКТ.

function onRequest(request, sender, callback) {
   if (request.action == 'insertprofile') {
     insertprofile(request.serialize, callback);
   }
};
...