asp.net - 在 ajax 请求之前调用的表单操作
问题描述
我正在尝试使用 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);
}
});
});
现在当我按下提交按钮时,首先调用 javascript 函数中的方法UpdateUser
,UserController
我不明白为什么会发生这种情况,因为我使用了preventDefault
. 如何防止调用绑定到表单的 asp net 操作?
解决方案
如果您首先需要 JavaScript 而不是必须从表单中删除 asp-Controller 和操作,那么您可以通过 JavaScript 验证表单并通过 Ajax 调用将数据发送到控制器/操作。
推荐阅读
- helidon - Helidon的WebClientRequestBuilder中的request()和submit()有什么区别?
- django - Django 方法是如何调用的?
- codenameone - 拉动刷新容器
- python - pkg_resources:未找到“sh”分布,需要 buildozer
- javascript - 防止使用 Javascript 调整图像大小
- angular - 与 Mantra 生物识别设备的离子应用程序连接
- java - 将 JSON 解析为 Java 实体
- c++ - C++ 函数指针
- android - 尝试在 Google Play 控制台中预览我的应用版本并不断出错
- sql - sql这个查询语句的作用是什么