0
votes

Comment éviter de soumettre dépend du résultat d'Ajax

dans le projet ASP.NET MVC, je veux que le bouton ne soit pas soumis si le résultat proviennent d'un code AJAX est faux.

mais il fait toujours soumettre.

c'est le code: < / p> xxx

et c'est le code JavaScript: xxx


4 commentaires

Vous pouvez essayer de soumettre le formulaire au lieu du bouton clic


$ .AJAX est un appel asynchrone, le formulaire est soumis longtemps avant que la fonction de réussite soit appelée. Modifiez le type de bouton à partir de Soumettre à BOUTON et envoyez le formulaire dans la fonction de réussite.


Venez penser à cela, vous pouvez également envisager de forcer $ .AJAX à être synchronisé en spécifiant ASYNC: Faux


Qu'attendez-vous que le résultat contient-il? Vous spécifiez qu'il devrait être JSON, mais vous manipulez comme un booléen


4 Réponses :


0
votes

élaborer sur mon commentaire ci-dessus. Changer xxx pré>

à p> xxx pré>

et dans votre fonction de réussite, modifiez p> xxx pré>

Pour P>

if (result) {
   $('#myid').closest("form").submit();
}


0 commentaires

2
votes

Je remplacerais l'élément d'entrée de bouton d'envoi avec un élément de bouton afin de cliquer sur le bouton déclencher l'événement OnClick sans soumettre le formulaire. Ensuite, lorsque vous obtenez la réponse Ajax, vous pouvez utiliser de manière conditionnelle JQuery pour soumettre le formulaire. Cela peut nécessiter un peu de bricolage pour obtenir le formulaire de l'Onclick, mais cela vous empêchera de soumettre le formulaire trop tôt, comme je soupçonne que votre problème est. XXX PRE>

et P>

$('#myid').on('click', function(event) {
    var data = {
        CategoryName: $("#myCategoryNameId").val(),
        CategoryID: $("#myCategoryId").val()
    };
    $.ajax({
        type: 'POST',
        data: JSON.stringify(data),
        url: '/Category/ValidateCategoryName',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            if (result) {
                $('#myid').closest('form').submit();
            }
        }
    });
});


2 commentaires

J'ai copié et collé d'une autre réponse pour cette partie. Bien que ce ne soit pas fonctionnellement une erreur, je suis d'accord c'est une mauvaise pratique de codage, donc je vais le réparer. Merci!


Ohh, ça marche bien, c'est exactement ce que je veux parce que ce code utilise l'ID du bouton, il suffit de modifier le type d'entrée sur le bouton au lieu de soumettre, merci man



1
votes

Ce que je sais d'une très longue période est le formulaire code> code> L'action de redirection par défaut n'attend pas que AJAX a renvoyé son résultat. Vous pouvez donc utiliser une variable booléenne pour contrôler cela .. Voir le code suivant

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input name="CategoryID" id="myCategoryId" type="text" value="0" />
  <input name="CategoryName" id="myCategoryNameId" type="text" value="" />
  <input class="btn btn-primary" id="myid" type="submit" value="Add" />
</form>


2 commentaires

Merci @MoHammed, cela fonctionne correctement, mais j'ai de nombreuses formes dans la page, je souhaite donc utiliser l'identifiant du formulaire, mais pas fonctionner lors de l'utilisation de l'identifiant, que puis-je faire? $ ("formulaire-id '). On (" Soumettre ", fonction (e) {...}


@mustafa ID dans Sélecteur commence par # YA MUSTAFA .. $ ('# formulaire-id') .. Mais vous devez savoir que l'ID devrait être unique .. Ceci Les moyens n'utilisent pas le même identifiant avec plusieurs éléments. Si tel est le cas, le code fonctionnera avec juste la première. Pour utiliser le sélecteur avec plusieurs éléments, utilisez Classe ES au lieu de ID S



0
votes

moyen le plus propre de le faire: xxx


2 commentaires

rien ne se passe, mais le code de @MoHammed fonctionne bien


Pouvez-vous partager avec moi avec la visionneuse d'équipe. J'aimerais voir le comportement!