【问题标题】:Javascript Main Function Fires First Before the Sub Function InsideJavascript Main 函数在内部的子函数之前首先触发
【发布时间】:2016-11-11 08:13:33
【问题描述】:

我有一个简单的对话框,在我的 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 () {
            }
        });

关于我在 Save 对话框中调用的函数 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”首先出现?

【问题讨论】:

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


    【解决方案1】:

    让 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 () {
            }
        });
    

    【讨论】:

    • 这是否解决了您的问题...回电??
    • 您好,我尝试了您的代码,但第二个警报框不再触发。有没有办法让第一个和第二个警报框触发?
    • @WillyDavidJr alert("First") 是否触发?
    • @WillyDavidJr 我用回调编辑代码以防出错,检查并查看触发了哪个警报!
    • 我关注了您的代码,但代码未运行,错误为:“Uncaught ReferenceError: fncBulkApprove is not defined”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    相关资源
    最近更新 更多