Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 Angular js验证函数在api验证调用完成之前返回_Javascript_Jquery_Ajax_Asp.net Mvc_Angularjs - Fatal编程技术网

Javascript Angular js验证函数在api验证调用完成之前返回

Javascript Angular js验证函数在api验证调用完成之前返回,javascript,jquery,ajax,asp.net-mvc,angularjs,Javascript,Jquery,Ajax,Asp.net Mvc,Angularjs,问题是validate()总是返回true。如果我更改validationStatus=false,那么它总是返回false。GetNameValid为async false仍然返回validationStatus在GetNameValid()完成执行之前被调用,因此永远不会调用checkValidInput,也永远不会发生实际验证。 对于这种情况,是否有另一种方法需要在函数返回之前等待ajax调用。 任何指向正确方向的文章或博客都会有所帮助。 谢谢我想你能做的就是把另一个链接在一起,然后连接到

问题是validate()总是返回true。如果我更改validationStatus=false,那么它总是返回false。GetNameValid为async false仍然返回validationStatus在GetNameValid()完成执行之前被调用,因此永远不会调用checkValidInput,也永远不会发生实际验证。 对于这种情况,是否有另一种方法需要在函数返回之前等待ajax调用。 任何指向正确方向的文章或博客都会有所帮助。
谢谢

我想你能做的就是把另一个链接在一起,然后连接到你已经拥有的那一个上,这样你就可以随心所欲了。虽然这是未经测试的,但我认为它应该有效

                if (!validate()) {
                    return;
                };


            function validate() {
                var nameIsValid = false;
                var validationStatus = true;
                dataApi.GetNameValid(viewModel.Name).then(function (data) {
                    nameIsValid = data.isValid;
                    validationStatus = checkValidInput(nameIsValid);
                });
                return validationStatus;
            }

            function checkValidInput(isValid)
            {
                if(!isValid){
                    return false;
                }
            //chk other input field validations
            }

我认为你能做的就是把另一个链子连在一起,然后连到你已经拥有的那个链子上,这样你就可以随心所欲了。虽然这是未经测试的,但我认为它应该有效

                if (!validate()) {
                    return;
                };


            function validate() {
                var nameIsValid = false;
                var validationStatus = true;
                dataApi.GetNameValid(viewModel.Name).then(function (data) {
                    nameIsValid = data.isValid;
                    validationStatus = checkValidInput(nameIsValid);
                });
                return validationStatus;
            }

            function checkValidInput(isValid)
            {
                if(!isValid){
                    return false;
                }
            //chk other input field validations
            }

返回dataApi.GetNameValid
并从then块返回验证状态。。通过它链接,并在scope/controller实例上设置一个属性,或者对它执行任何操作
validate()。然后(function(validation){$scope.valid=validation})
@PSL我尝试了这个方法,但仍然不起作用。行为类似。
返回dataApi.getnamefalid
并从then块返回验证状态。。通过它链接,并在scope/controller实例上设置一个属性,或者对它执行任何操作
validate()。然后(function(validation){$scope.valid=validation})
@PSL我尝试了这个方法,但仍然不起作用。行为类似。
返回dataApi.getnamefalid
并从then块返回验证状态。。通过它链接并在scope/controller实例上设置一个属性,或者对它执行任何操作
validate()。。