Post表单后的结果从ajax asp.net
本文关键字:ajax asp net 结果 表单 Post | 更新日期: 2023-09-27 18:01:24
我有一个登录和注册弹出显示在aspx页面。我有2个提交按钮在这个弹出一个登录和另一个注册。
点击注册按钮,我正在使用jquery ajax检查电子邮件的可用性,如果电子邮件是可用的,我想提交页面到服务器,但问题是,当用户点击注册按钮,它不等待ajax的结果。
$('#btnRegister').on('click', function(e) {
if (!isValid()) {
e.preventDefault();
return false;
} else {
if (checkEmailAvailability($('#txtEmailId').val())) {
return true;
} else {
e.preventDefault();
return false;
}
}
});
这是因为ajax请求是异步的。因此,页面继续进行其他活动(如提交表单),并在请求到达时处理请求的结果。
你可能想在发送请求之前禁用提交,然后在成功的情况下手动提交表单:
$('#btnRegister').on('click', function(e) {
e.preventDefault();
if (isValid()) {
var email = $('#txtEmailId').val();
checkEmailAvailability(email, function() {
$("form_selector_here").submit();
});
}
});
你需要在checkEmailAvailability
中引入一个回调:
function checkEmailAvailability(email, callback) {
$.ajax({
//details of the ajax call
success: callback
})
}
与其这样做,为什么不在页面上创建一个针对电子邮件控件的自定义验证器呢?让自定义验证器调用返回真或假的WebApi或控制方法。
这样你提交的页面仍然会被ASP正确处理。. NET表单提交和控件验证器将为您处理这个问题。
为每个控件提供每个验证器将为可维护性和遵循ASP提供更加结构化的页面。. NET Web表单约定。