我的 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/