Как вы отправляете данные 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>