Javascript 主函数在内部子函数之前首先触发

标签 javascript jquery asp.net-mvc asp.net-mvc-4 jquery-ui

我的 MVC 项目有一个简单的对话框,其中有一个“保存”和“取消”按钮。在保存按钮上,我需要触发一个函数,该函数将返回一个值,并且该值将用于我的 if 和 else 条件。

问题是,即使我将该功能放在保存按钮上,它也不会首先触发。这是我的代码:

 $("#divMain").dialog({
            modal: true,
            autoOpen: false,
            buttons: {
                "SAVE": function () {
                    var returnValue = fncApprove();
                    alert("Second");

                    //if and else condition here based on the returnValue variable 
                },
                "Cancel": function () {
                    $(this).dialog("close");
                }
            },
            close: function () {
            }
        });

关于我在保存对话框中调用的函数fncApprove:

function fncApprove() {
        var objData = $('form').serialize();
        $.ajax({
            cache: false,
            url: '@Url.Action("Approve", "Main")',
            data: objData,
            type: 'POST',
            traditional: true,
            success: function (data) {
                alert("First");

            },
            error: function () {
            }
        });
    }

此操作的输出是首先出现警报框“Second”,而不是“First”警报框。我是否需要修改此处的某些内容以使“First”首先出现?

最佳答案

使 fncApprove 返回回调,然后执行 if 和 else

function fncApprove(callback) {
    var objData = $('form').serialize();
    $.ajax({
        cache: false,
        url: '@Url.Action("Approve", "Main")',
        data: objData,
        type: 'POST',
        traditional: true,
        success: function (data) {
            alert("Success");
            callback(data);
        },
        error: function (error) {
           alert("Error");
           callback(error);
        }
    });
}



 $("#divMain").dialog({
        modal: true,
        autoOpen: false,
        buttons: {
            "SAVE": function () {
                fncApprove(function(returnVal) {
                      alert("CallBack");
                      //if and else condition
                });

            },
            "Cancel": function () {
                $(this).dialog("close");
            }
        },
        close: function () {
        }
    });

关于Javascript 主函数在内部子函数之前首先触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40543738/

相关文章:

c# - 在 ASP.NET MVC 中关闭浏览器或选项卡时如何注销用户?

javascript - 使用 Angular 谷歌地图时如何正确处理标记点击事件?

javascript - 如何使用 rangy 从 iframe 中抓取选定的文本?

javascript - Chrome Developer Tools Profiler 显示不同数量的方法调用与 console.log

javascript - 每个功能都没有按预期工作

c# - 枚举到下拉列表 MVC3 C#

javascript - 将连接的数字作为字符串存储在二维数组中。结果仍然是 "undefined"

javascript - 如何缩短这个JS函数

javascript - 如何动态更改动态div的div文本

javascript - 无法使用 jQuery 更改图像宽度