在函数中-等待ajax响应

in function - waiting ajax to respond

本文关键字:ajax 响应 等待 函数      更新时间:2023-09-26

在此函数中:

  function ValidateForm()
    {
        var ret = true;
        if ($("#txtName").val().trim().length == 0) { ret = false; $('#txtName').effect("highlight", {}, 1000); }
        if ($("#txtSurname").val().trim().length == 0) { ret = false; $('#txtSurname').effect("highlight", {}, 1000); }
        if ($("#txtUserName").val().trim().length == 0) { ret = false; $('#txtUserName').effect("highlight", {}, 1000); }
        else {
            var pData = {}; pData["username"] = $("#txtUserName").val();
            $.ajax({
                url: 'service.aspx?/isusernameexist/',
                dataType: 'json',
                type: "POST",
                data: pData,
                success: function (data) {
                    if (data[0].cnt > 0) {
                        ret = false; $('#txtUserName').effect("highlight", {}, 1000);
                    }
                }
            });
        }
        return ret;
    }

我试图在插入新用户之前验证表单,但检查用户名是否免费使用,需要一些时间,我的函数ValidateForm()在ajax请求完成之前返回值。

在这种情况下如何正确实现ajax功能?

你不能这样做。Javascript中的事件系统是异步的,函数总是在AJAX请求运行之前返回,并且触发回调。

你应该找另一种方法来做这件事。调用ValidateForm的函数必须重新编写,以考虑JavaScript的异步特性。想想它能做什么,以及如何让它在约束条件下工作。

是否显示错误给用户?如果是,在回调函数中显示错误。

是否使表单无效或阻止提交?如果是,将其存储为全局变量或数据属性,以便稍后提交时查询。