我有一个简单的对话框,我的MVC项目上有一个Save and Cancel按钮。在保存按钮上,我需要触发一个返回值的函数,该值将用于我的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 () {
}
});
}
这样做的输出是首先出现警告框“第二”而不是“第一”警告框。我是否需要在此修改内容以便首先显示“第一”?
答案 0 :(得分:2)
使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 () {
}
});