Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数内-等待ajax响应_Javascript_Ajax - Fatal编程技术网

Javascript 函数内-等待ajax响应

Javascript 函数内-等待ajax响应,javascript,ajax,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; $(

在该功能中:

  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的异步性质。思考它的作用以及如何使其在约束条件下工作

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

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