2017-06-02 53 views
1

这是我正在努力完成的。如何在MVC中的按钮点击添加确认弹出框

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> 
+1

所以为什么ajax调用的成功不能执行Doy()? –

+0

谢谢你的建议。什么没有想到它 – user12345

回答

1

你可以只调用DoY()在DoX()内你需要它的地方。

如果你不能这样做,因为你的标准,你可以通过一个匿名的回调函数来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'); 
    }); 
} 
+1

谢谢。疑难杂症。我需要使用回拨来解决这种情况 – user12345

+0

很高兴我能提供帮助。 – Cossintan

相关问题