Как вы отправляете данные html-формы с помощью атрибута action без перенаправления на другую страницу?

Я использую Angular и Plaid. Я хочу отправить следующую форму, которая публикует public_token для /authenticate с помощью атрибута 'action' в html-форме. Как опубликовать public_token на моем сервере (/authenticate) без перенаправления на другую страницу.

Шаг 2: Простая интеграция

Включите следующую разметку (теги и) в ваш сайт или веб-приложение:

- Скрытый ввод с именем public_token будет добавлен к этой форме, как только пользователь завершит поток ссылок. Затем Link отправит форму, отправив public_token на ваш сервер. -

<form id="some-id" method="POST" action="/authenticate"></form>

<script
  src="https://cdn.plaid.com/link/stable/link-initialize.js"
  data-client-name="Client Name"
  data-form-id="some-id"
  data-key="test_key"
  data-product="auth"
  data-env="tartan">
</script>

Инструкции для этого можно найти здесь: https://plaid.com/docs/link/

Не дается никакого руководства о том, как получить public_token из формы на стороне клиента, хотя в нем четко указано, что безопасно выставлять его на стороне клиента.

2 ответа

Решение

Вы должны предотвратить действие по умолчанию для формы: есть два способа сделать это: два с jQuery и Vanilla JS:

JQuery

$('#form').submit(function (event) {
    event.preventDefault();
    window.history.back();
});

JS

if (element.addEventListener) {
    element.addEventListener("submit", function(event) {
        event.preventDefault();
        window.history.back();
    }, true);
}
else {
    element.attachEvent('onsubmit', function(event){
        event.preventDefault();
        window.history.back();
    });
}

Angular Вы можете передать объект $event в ваш метод и вызвать для него $event.preventDefault(), чтобы событие по умолчанию не происходило:

<a href="#" ng-click="do($event)">Click</a>

// then in your controller.do($event) method
$event.preventDefault()

Напишите директиву, как это, а затем введите это ваше угловое заявление.

yourApp.directive('preventDefault', function() {
    return {
        restrict: 'AE',
        link: function(scope, element, attrs) {
            element.on('click', function(e){
                    e.preventDefault();
                });
        }
   };
});

А затем добавьте в форму директиву "предоплату по умолчанию" или любой HTML-тег, который вы хотите остановить поведение по умолчанию, как

<form id="some-id" method="POST" action="/authenticate" prevent-default></form>
Другие вопросы по тегам