kn1ght_t
@kn1ght_t

Как отправить форму аяксом и на выходе получить то же самое, что и через обычный action?

Нужно отправить некую форму на внешний php скрипт так, чтобы он (скрипт) не отличил то, что на выходе примет, от обычного action с post методом у формы

то есть есть форма, например:
<form id="amoforms_form" class="amoforms-form amoforms-view-form" action="https://forms.amocrm.ru/queue/add" method="post">
					<input id="fields[name_1]" 	type="text" name="fields[name_1]" class="text-input ">
					<input id="fields[828922_1]" type="text" class="text-input amoforms-validate_required" name="fields[828922_1][1870092]" >
					<input id="fields[828924_1]" type="text" class="text-input amoforms-validate_email" name="fields[828924_1][1870104]">
					<input id="fields[1274563_1]" type="text" name="fields[1274563_1]" class="text-input">
					<input type="hidden" name="form_id" id="form_id" value="8259">
					<input type="hidden" name="hash" value="aa57662b9b402c0e563dd73b81d23e93">
					<input type="hidden" name="user_origin" id="user_origin" value="" />
					<input type="hidden" name="fields[_2]" id="utm_source" value="" />
					<input type="hidden" name="fields[_2]" id="utm_medium" value="" />
					<input type="hidden" name="fields[_2]" id="utm_campaign" value="" />
					<input type="hidden" name="fields[_2]" id="utm_term" value="" />
					<input type="hidden" name="fields[_2]" id="ga" value="" />
					<button type="submit" id="button_submit" class="">Получить</button>
</form>


она отправляется через action атрибут на внешний урл, соответственно после отправки я попадаю на страничку с этим скриптом и вижу результат обработки запроса
я же хочу остаться на своей текущей страничке и просто отправить данные
здесь бы мне прекрасно помог ajax, но я не знаю, в каком виде отправлять, чтобы сервер получил данные в правильном формате

как можно решить данную проблему?
  • Вопрос задан
  • 808 просмотров
Решения вопроса 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
kn1ght_t
@kn1ght_t Автор вопроса
нашел такое решение еще:
$('form').on('submit',function(e){
    e.preventDefault();
    $.ajax({
        type     : "POST",
        cache    : false,
        url      : $(this).attr('action'),
        data     : $(this).serialize(),
        success  : function(data) {
            alert('success');
        }
    });
});


то есть все данные формы в дата класть через data: $(this).serialize()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Chamie
@Chamie
Для этого есть объекты FormData. Просто заполняем такой из существующей формы
var formData = new FormData(document.querySelector("#amoforms_form"));

А потом отправляем его как данные запроса
var request = new XMLHttpRequest();
request.open("POST", "queue/add");
request.send(new FormData(formElement));
Но на другой домен так отправить запрос не получится.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы