函数完成后ajax jquery消息显示

时间:2017-05-12 05:49:38

标签: javascript jquery ajax

我认为这是一个简单的问题。我试过搜索但还没有找到答案。

 deleteComment: function (commentJson, success, error) {
            $.ajax({
                type: "POST",
                async: false,
                url: deleteCommentConfig.url,
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify({ commentId: commentJson.CommentId }),
                dataType: "json",
                success: function (result) {
                    if (result.d) {
                        success();
                    }
                    messageBox(result.d);
                },
                error: error
            });
        },

var messageBox = function (hasDeleted) {
    if (hasDeleted) {
        alert("Deleted successfully");
    } else {
        alert("Error");
    }
}

我想在成功()执行后显示消息。

这意味着留下的评论已经显示消息。 不管怎样,谢谢!

P / s:我在https://www.w3schools.com/jquery/jquery_callback.asp读了一个关于jQuery回调函数的主题。 我们可以在这里使用吗?如果可以,怎么用?

2 个答案:

答案 0 :(得分:0)

您可以尝试这样

deleteComment: function (commentJson, success, error) {
        $.ajax({
            type: "POST",
            async: false,
            url: deleteCommentConfig.url,
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ commentId: commentJson.CommentId }),
            dataType: "json",
            success: function (result) {
                if (result.d) {
                    success();
                }
               $.when(this).then(setTimeout(function(){ messageBox(result.d)}, 200));
              // if you dont want use set timeout then use
              // $.when(this).then(messageBox(result.d), 200));
            },
            error: error
        });
    },

var messageBox = function (hasDeleted) {
if (hasDeleted) {
    alert("Deleted successfully");
} else {
    alert("Error");
}
 }

提供一种基于零个或多个Thenable对象执行回调函数的方法,通常是表示异步事件的Deferred对象。

答案 1 :(得分:0)

考虑到您var success = function()的实施,您可以尝试以下方法:

修改success()以接受回调函数,如下所示:

var success = function(callback) { 
    self.removeComment(commentId); 
    if(parentId) 
        self.reRenderCommentActionBar(parentId); 

    if(typeof callback == "function")
        callback();
};

var messageBox = function (hasDeleted) {
    if (hasDeleted) {
        alert("Deleted successfully");
    } else {
        alert("Error");
    }
}

deleteComment: function (commentJson, success, error) {
            $.ajax({
                type: "POST",
                async: false,
                url: deleteCommentConfig.url,
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify({ commentId: commentJson.CommentId }),
                dataType: "json",
                success: function (result) {
                    if (result.d) {
                        //passing the callback function to success function
                        success(function(){
                            messageBox(result.d);
                        });
                    }

                },
                error: error
            });
        },