Отправка данных POST с помощью Firefox Request API

Здравствуйте, я был бы очень благодарен за помощь с этим вопросом API Firefox.

У меня есть веб-страница, прослушивающая переменную POST, называемую колбасой:

<!DOCTYPE HTML>
<body>
<?php   
echo $_POST['sausage'];
?>

Использование Request API в дополнении SDK Firefox , я сделал кнопку, которая должна загружать мою веб-страницу при отправке переменной POST:

var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");
var Request = require("sdk/request").Request;

 var button = buttons.ActionButton({
    id: "mozilla-link",
    label: "Visit Mozilla",
    icon: {
        "16": "./icon-16.png",
        "32": "./icon-32.png",
        "64": "./icon-64.png"
        },
    onClick: handleClick
});

function handleClick(state)
{
    tabs.open({
        url: "http://localhost/home.php/",
        onOpen: runScript
    });
}

function runScript(tab)
{
    Request({
      url: "http://localhost/home.php/",
      content: { sausage: 'sausage' }
    }).post();
} 

Это загружает целевую страницу, но не отправляет переменную POST, поэтому функция php echo выдает ошибку. Пожалуйста, может кто-нибудь объяснить, что пошло не так. Я особенно хотел бы избежать использования каких-либо функций API более низкого уровня, потому что это похоже на то, что Request должен есть на завтрак. Заранее спасибо!


person Jez    schedule 24.05.2015    source источник
comment
Для подхода без SDK вы можете сделать это с помощью этого: github.com /Noitidart/AysncZip/blob/master/bootstrap.js#L515   -  person Noitidart    schedule 25.05.2015
comment
возможно, вам следует проверить необработанный http-запрос на стороне сервера, чтобы увидеть, что туда поступает. вы также можете использовать набор инструментов браузера для проверки запросов на клиенте. боковая сторона.   -  person the8472    schedule 25.05.2015


Ответы (1)


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

person therealjeffg    schedule 25.05.2015
comment
спасибо, теперь я вижу, что он сначала открывает вкладку, поэтому переменная не отправляется при загрузке страницы. Итак, как мне изменить свой код, чтобы он отправлял данные POST одновременно с загрузкой страницы? Я могу легко сделать это с данными GET, вставив их в конец URL-адреса, но это делает их доступными для пользователя, что нежелательно. - person Jez; 25.05.2015
comment
Насколько я знаю, это невозможно сделать, просто используя запрос API. Хак можно было бы открыть вкладку с пустой страницей, содержащей скрытую форму, которая отправляется сразу после загрузки. Это создаст короткую вспышку, но это сработает. - person therealjeffg; 27.05.2015
comment
@canuckstani спасибо за вашу помощь, в итоге я добавил данные к URL-адресу и использовал get, потому что это казалось проще и не вызывало никаких побочных эффектов. - person Jez; 29.05.2015
comment
Пока вы защищаете от воспроизведения, например, вы не изменяете данные при каждом запросе, верно? - person therealjeffg; 29.05.2015
comment
Правильно - ничего не меняется, я просто добавляю ту же переменную вместе с любыми другими переменными GET, которые уже были в URL-адресе. - person Jez; 31.05.2015
comment
...на основе некоторого кода, опубликованного вами в ответ на совершенно другое запрос на блокировку сайтов - person Jez; 31.05.2015