2017-06-02 39 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

相關問題