在功能 - 等待ajax回应

时间:2013-01-06 12:01:23

标签: javascript ajax

在这个函数中:

  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功能?

1 个答案:

答案 0 :(得分:0)

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

你应该找到另一种方法来做到这一点。必须重写调用ValidateForm的函数以考虑JavaScript的异步性质。想想它的作用以及如何使它在约束中发挥作用。

是否向用户显示错误?如果是这样,请在回调函数中显示该错误。

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