У меня есть функция javascript, отправляющая почтовые запросы, как это делает простая форма html. Вот реализация функции:Браузер отправляет GET вместо POST
function sendDirectPost(uri, data) {
var $form = $('<form action="' + withContext(uri) + '" method="POST"></form>');
appendDataToForm($form, data);
$form.submit();
}
function appendDataToForm($form, data) {
var body = $('body');
_.each(data, function (value, key) {
$form.append($('<input type="hidden">')
.attr('name', key)
.attr('value', value));
});
$form.css('display', 'none');
$form.appendTo(body);
return $form;
}
Цель состоит в том, чтобы имитировать обычный вид после Подавать с JavaScript, так что я не должен применять редирект с JavaScript в явном виде.
В большинстве браузеров эта функция делает то, что я ожидаю. Однако в некоторых случаях это не так. По какой-то причине он отправляет запрос GET. Мне не удалось воспроизвести его, однако служба регистрации показывает из пользовательского агента, что браузеры Safari 8.0 или Android Web Kit Browser. Может быть, есть и другие, но я не проверял все.
Вот вопросы: 1. В чем может быть проблема с подходом? 2. Существуют ли другие способы реализации стандартного представления формы с помощью javascript? Возможно, используя функцию $ .ajax()?
Проблема с $ .ajax() или $ .post() заключается в том, что мне всегда приходится обрабатывать ответ и напрямую добавлять логику перенаправления. Когда я использую форму submit, мне не нужно добавлять перенаправление на стороне клиента. – Kuvaldis
одна строка кода для перенаправления с js меньше, чем накладные расходы с HTML – eagleeye