Jquery 如何在MVC中单击按钮时添加确认弹出窗口

Jquery 如何在MVC中单击按钮时添加确认弹出窗口,jquery,asp.net-mvc,asp.net-ajax,Jquery,Asp.net Mvc,Asp.net Ajax,这就是我正在努力实现的目标 1) 当用户单击“保存”时,将出现一个弹出窗口 2) 弹出窗口将显示“是否要执行XYZ”。是继续,否返回屏幕,无任何内容 3) 如果没有,请关闭弹出窗口。我有jquery功能来检测是否点击了取消按钮,弹出窗口将被关闭。 4) 如果是,则调用ajax来执行。在Ajax之后执行第二次操作 如何处理第四个问题。ajax是异步函数。我需要完成它来完成第二个功能 有什么建议?我不想偏离设计太多(除非我别无选择),因为我必须遵循一些标准 谢谢 伪码 @using (Html.Be

这就是我正在努力实现的目标

1) 当用户单击“保存”时,将出现一个弹出窗口 2) 弹出窗口将显示“是否要执行XYZ”。是继续,否返回屏幕,无任何内容 3) 如果没有,请关闭弹出窗口。我有jquery功能来检测是否点击了取消按钮,弹出窗口将被关闭。 4) 如果是,则调用ajax来执行。在Ajax之后执行第二次操作

如何处理第四个问题。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>
@使用(Html.BeginForm(“action1”,“controller1”,FormMethod.Post,new{id=“form1”}))
{
@*各种控制*@
}
函数DoXY(e){
if(DoX())
Doy();
}
函数DoX()
{
$.post('@(Url.Action(“funcX”,“controller1”))),postData,函数(结果){
如果(result.result!=“True”)
{
//怎么办,我知道归假不管用
}
其他的
{
//怎么办,我知道还真不行
}
});
函数DoY()
{
//做点什么
$(“#form1”).submit();//这将继续执行下一个操作
}
}
只要在需要的地方调用DoX()中的DoY()

如果您的标准不允许这样做,您可以向DoX()传递匿名回调函数,如下所示:

然后在DoX()中,您只需调用匿名函数,并将结果作为参数:

function DoX(callback)
{
    $.post('@(Url.Action("funcX", "controller1"))', postData, function (result) {
        callback(result.Result == 'True');
    });
}

那么,为什么ajax调用成功后不能执行Doy()?感谢您的建议。我没想到什么,汉克斯。明白了。我需要回电话来解决这个问题。很高兴我能帮上忙。
function DoX(callback)
{
    $.post('@(Url.Action("funcX", "controller1"))', postData, function (result) {
        callback(result.Result == 'True');
    });
}