Интеграция формы плагина Gravity с моим API, используя javascript - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу использовать формы плагинов гравитации на некоторых целевых страницах. Я могу вызвать функцию скрипта java после того, как пользователь отправит форму. Проблема, с которой я сталкиваюсь, заключается в том, что гравитационные формы не предоставили возможность редактировать атрибуты имен html элементов при создании любой гравитационной формы, после отправки формы, когда я получаю данные через идентификатор формы, я не могу понять, что к чему. Предположим, если я создал поле электронной почты в форме, если имя атрибута входного тега равно «email», я могу выяснить, что это аналогично электронной почте для остальных полей, но имя динамически генерируется плагином гравитации и его значениями, такими как input_2. Я хочу получить соответствующие имена полей, такие как электронная почта, телефон, страна, город, адрес и т. Д. c. как API, который я использую для хранения данных, ожидает эти имена. Может кто-нибудь помочь мне исправить это и плавно интегрировать гравитационные формы с API, используя javascript. Вот фрагмент кода, который я использую:

<script>
document.getElementById('form_id').onsubmit = function () {
    saveFormData('form_id');
}

function saveFormData (formId) {
    var data = serializeFormData(document.querySelector('#' + formid));

    axios({ method: 'post', url: url, data: formData }).then(function (resp) {
        if (resp && resp.data && resp.data.success) {
            alert("Thank you for contacting us!");
        } else {
            alert(resp.data.error);
        }
    }).catch(function (err) {
        if (err.response && err.response.data && err.response.data.error) {
            if (err.response.data.error === 'Validation Error') {
                for (var key in err.response.data.fields) {
                    return alert(err.response.data.fields[key][0]);
                }
            } else {
                return alert(err.response.data.error);
            }
        } else {
            return alert("Something went wrong!");
        }
    });

    return false;
}

function serializeFormData(formElement) {
    const values = {}, inputs = formElement.elements;

    for (let i = 0; i < inputs.length; i++) {
        if (inputs[i].name && inputs[i].type === "radio" && inputs[i].checked) {
            values[inputs[i].name] = inputs[i].value;
        } else if (inputs[i].name) {
            values[inputs[i].name] = inputs[i].value;
        }
    }

    return values;
}
</script>

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

...