Задать вопрос

Как эмулировать сабмит формы в браузере?

Суть: имеется строка с параметрами — результатами $(form).serialize(), к примеру из localStorage, т.е. сама форма на странице (уже) не существует. Как отправить эту строку на сервер так, как их бы отправила форма — т.е. обычным (не ajax) POST запросом?
  • Вопрос задан
  • 5083 просмотра
Подписаться 8 Оценить 1 комментарий
Решения вопроса 1
dpigo
@dpigo
Front-end developer
на SO есть ответ

function post_to_url(path, params, method) {
    method = method || "post"; // Set method to post by default if not specified.

    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
так как метода deserialize у jquery нету, придется просто написать его (пробегаем по хэш-мэпу, берем имена полей, распихиваем значения по инпутам). Ну а потом просто form.submit()
Ответ написан
@kotia
Если старые браузеры не критичны, поможет обьект FormData
developer.mozilla.org/en-US/docs/Web/API/FormData
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы