Действие формы вызывается перед запросом ajax - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь проверить некоторые данные, используя javascript, поэтому после создания этой формы:

<form asp-controller="User" asp-action="UpdateUser" asp-antiforgery="true" id="userInformations">
   <div class="form-group">
<label class="col-lg-6 control-label">@Localizer["OldPassword"] (*)</label>
<div class="col-lg-12">
    <input class="form-control" required id="oldPassword"
            asp-for="@Model.ExistingPassword" type="password" />
</div>
<div class="form-group">
    <label class="col-lg-6 control-label">@Localizer["NewPassword"] (*)</label>
    <div class="col-lg-12">
        <input class="form-control" required id="newPassword"
                asp-for="@Model.Password" type="password" />
    </div>
</div>
<button type="submit" class="btn btn-primary">Store</button>
</form>

Я связал функцию javascript, которая перехватывает отправку:

$('#userInformations').on('submit', function (event) {
  event.preventDefault();
 //validate some fields

//execute ajax request
$.ajax({
    url: $(this).attr('action'),
    type: "POST",
    data: $(this).serialize(),
    success: function (result) {
        alert(true);
        console.log(result)
    },
    error: function (data) {
        console.log(data);
    }
});

});

Теперь, когдаЯ нажимаю кнопку отправки, метод UpdateUser в UserController вызывается первым из функции javascript, и я не понимаю, почему это происходит, потому что я использовал preventDefault.Как я могу предотвратить вызов действия asp net, привязанного к форме?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

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

Я использую предоставленный вами код, и он работает.

Попробуйте следующие два способа:

1.Добавьте следующий фрагмент кода над вашим javascript

<script src="~/lib/jquery/dist/jquery.js"></script>

2. Или напишите свой javascript в @ section Scripts {}

0 голосов
/ 09 октября 2018

Если вы хотите сначала JavaScript, то вам нужно удалить asp-Controller и действие из формы, затем вы можете проверить форму с помощью JavaScript и отправить данные через Ajax-вызов Controller / action.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...