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;
                    }
                }
            });

Post表单后的结果从ajax asp.net

这是因为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表单约定。