2015-11-24 2 views
-1

У меня есть функция 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()?

ответ

-1

Да, используя $.ajax() или даже $.post() было бы намного лучше и безопаснее. Я хочу, чтобы данные POST с js там не было причин делать это с помощью HTML-формы.

+0

Проблема с $ .ajax() или $ .post() заключается в том, что мне всегда приходится обрабатывать ответ и напрямую добавлять логику перенаправления. Когда я использую форму submit, мне не нужно добавлять перенаправление на стороне клиента. – Kuvaldis

+0

одна строка кода для перенаправления с js меньше, чем накладные расходы с HTML – eagleeye

Смежные вопросы