这就是我想要实现的目标。
1)当用户点击“保存”时,会弹出一个弹出窗口 2)弹出窗口会说,你想要执行XYZ吗?是的继续,没有回到屏幕,没有 3)如果没有,只需关闭弹出窗口即可。我有jquery函数来检测是否单击了取消按钮,弹出窗口将被关闭。 4)如果是,请调用ajax执行。 Ajax执行第二次操作后
如何处理数字4.ajax是异步函数。我需要完成它才能完成第二个功能。
有什么建议?我不想过多地偏离设计(除非我别无选择),因为我必须遵循一些标准
感谢
伪代码
@using (Html.BeginForm("action1", "controller1", FormMethod.Post, new { id = "form1" }))
{
@* various controls*@
<input type="submit" name="save1" id="Save1" value="Save" onclick="DoXY(event);" />
}
<script type="text/javascript">
function DoXY(e) {
if (DoX())
Doy();
}
function DoX()
{
$.post('@(Url.Action("funcX", "controller1"))', postData, function (result) {
if (result.Result != 'True')
{
//what to do, I know return false does not work
}
else
{
//what to do, I know return true does not work
}
});
function DoY()
{
//do something
$('#form1').submit(); //this will continue to next action
}
}
</script>
答案 0 :(得分:1)
你可以在需要它的DoX()中调用DoY()。
如果由于您的标准而不允许这样做,您可以将匿名回调函数传递给DoX(),如下所示:
function DoXY(e) {
DoX(function (result) {
if (result) {
Doy();
}
});
}
然后在DoX()中,您只需将结果作为参数调用该匿名函数:
function DoX(callback)
{
$.post('@(Url.Action("funcX", "controller1"))', postData, function (result) {
callback(result.Result == 'True');
});
}