2017-06-02 1 views
1

Voici ce que j'essaie d'accomplir.Comment ajouter une fenêtre contextuelle de confirmation sur un bouton, cliquez sur MVC

1) quand un utilisateur clique sur sauvegarder, un pop-up apparaîtra 2) le pop-up dira, voulez-vous exécuter XYZ. oui pour continuer, pas de retour à l'écran, et rien 3) si non, fermez la fenêtre. J'ai la fonction de jquery pour détecter si le bouton d'annulation est cliqué, le popup sera fermé. 4) si oui, appelez ajax pour effectuer. Après Ajax effectuer la deuxième opération

quoi faire sur le numéro 4. ajax est la fonction asynchrone. Je dois le finir pour faire la deuxième fonction.

Quel est le conseil? Je ne veux pas dévier de la conception trop (à moins que je n'ai pas d'autre choix) car il y a une norme je dois suivre

grâce

code pseudo

@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

alors pourquoi le succès de l'appel ajax ne peut-il pas exécuter Doy()? –

+0

Merci pour cette suggestion. Qu'est-ce que je n'y ai pas pensé – user12345

Répondre

1

Vous pouvez simplement appeler DoY() dans DoX() où vous en avez besoin.

Si vous n'êtes pas autorisé à le faire à cause de vos normes, vous pouvez passer une fonction de rappel anonyme à DoX() comme ceci:

function DoXY(e) { 
    DoX(function (result) { 
     if (result) { 
      Doy(); 
     } 
    }); 
} 

Et puis au sein DoX() vous appelez simplement cette fonction anonyme le résultat en tant que paramètre:

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

merci. Je t'ai eu. Je dois utiliser le rappel pour résoudre cette situation – user12345

+0

Je suis heureux d'avoir pu aider. – Cossintan