javascript - ajax 请求完成后 Jquery 延迟对象解析

标签 javascript jquery ajax

我有一个在表单提交后运行的代码。它是基于 AJAX 请求的。 我遇到的问题是在 Validation.done(function(){FormSubmit 函数中,我收到错误消息说 Uncaught TypeError: Validation.done is not a function。但如果您查看 FormValidate 函数,它会返回 deferredObject.promise 在 ajax 完成或失败中解决或拒绝。

那么问题出在哪里呢??

当用户提交表单时,我们运行操作:

$(document).ready(function() {
    $("#NewOrder").submit(function (e){
        e.preventDefault();
        FormSubmit("NewOrder");
        return false;
    });
});

function FormSubmit(FormId)
{
    var Validation = FormValidate(FormId);
    Validation.done(function(){
       //Do stuff if validation succeeded
    });
}

FormValidate 函数:

function FormValidate(FormId)
{
    var deferredObject = $.Deferred();

    var url = "../../ajax/FormValidate";
    var data = {};

    var promise = AjaxRequest(url, data);

    promise.done(function(response) {
        var resultArray = JSON.parse(response);
        var FormEntity = $('#'+FormId).attr('entity');

        if($.isEmptyObject(resultArray)){
            deferredObject.resolve();
        }
        else{
            $.each(resultArray, function( key, value ) {                
                $( "div#"+key+"_validation" ).text(value);              
            });         
            deferredObject.reject();
        }
    });

    promise.fail(function(response) {
        deferredObject.reject();
        console.log(response);      
    });

    return deferredObject.promise;
}

AjaxRequest 函数:

function AjaxRequest(url, data)
{
    var deferredObject = $.Deferred();

    var request = $.ajax({
        url: url,
        type: "POST",
        data: data,
    });

    request.done(function (response){
        deferredObject.resolve(response);
    });

    request.fail(function (response){
        deferredObject.reject(response);
    });

    return deferredObject.promise();
}

最佳答案

deferredObject.promise 是一个函数。您需要调用它来获取 promise 。

return deferredObject.promise();

关于javascript - ajax 请求完成后 Jquery 延迟对象解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286239/

相关文章:

c# - 执行 Asyc 时,我可以 "update"ASP UpdateProgress 吗?下载?

javascript - ajax函数的这些参数是如何工作的?

javascript - 如何在 jQuery 中获取 POST 变量

javascript - angular-ui-routing 不会改变 View

javascript - 相当于jquery中的angularjs拦截器

jquery - 基于单选按钮显示和隐藏表格

javascript - 将一个高度加到另一个高度上

javascript - 获取具有相同类的多个输入字段的值并添加到javascript对象中

javascript - jQuery:Foreach 元素href?

javascript - 使用 CKEDITOR.style.addCustomHandler 修改格式插件样式