0 votes

JQuery submit form et sortie de la réponse ou du message d'erreur

Je veux soumettre un formulaire et afficher un message sur le résultat. update_records initialise alert_message au message d'erreur. En cas de succès, je m'attends à ce que sa valeur soit modifiée. Merci à update_records message de sortie. Mais la fonction signale toujours "Error submitting form". Quel est le problème ?

Le code est le suivant :

  function update_records(form_name) {
    var options = {
      async: false,
      alert_message: "Error submitting form",
      success: function(message) {
        this.alert_message = message;
      }
    };
    $('#' + form_name).ajaxSubmit(options);
    alert(options.alert_message);
  }

Je suis novice en matière de Javascript/JSon/Jquery et je soupçonne que je ne comprends pas certaines bases des technologies mentionnées.

UPDATE :

J'ai spécifié "async:false" pour rendre l'exécution synchrone (Est-ce correct ?)

J'ai également essayé d'insérer un délai entre les deux lignes suivantes :

$('#' + form_name).ajaxSubmit(options);
pausecomp(1000); // inserted pause
alert(options.alert_message);

Il ne résout pas non plus le problème. Code pour pousecomp suit :

  function pausecomp(millis)
  {
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while(curDate-date < millis);
  }

0voto

Andy Points 8860

L'appel AJAX d'ajaxSubmit est asynchrone - cela signifie que la demande AJAX est effectuée hors de l'ordre d'exécution habituel du programme, et dans votre programme cela signifie que l'alerte est appelée avant this.alert_message = message; a l'opportunité de s'exécuter. L'ordre d'exécution est le suivant :

  1. appelez update_records()
  2. faites la demande AJAX ajaxSubmit, n'oubliez pas d'exécuter la fonction de rappel mais pas maintenant
  3. appeler le alert(options.alert_message)
  4. lorsque la demande ajaxSubit renvoie des données, exécute la fonction de rappel (qui consiste à définir l'élément this.alert_message variable)

Pour que l'alerte affiche la bonne valeur, déplacez le code qui utilise les données de retour AJAX (l'élément alert() ) à la success() c'est à cela que sert la fonction de réussite.

0voto

miensol Points 1889
 $('#' + form_name).ajaxSubmit(options);

Comme l'acronyme AJAX le suggère, cet appel est asynchrone, de sorte que votre alert(options.alert_message); est appelé avant que le callback de succès soit appelé, c'est pourquoi vous obtenez toujours une alerte avec un message d'erreur, bien qu'un appel ajax puisse se terminer avec succès. Vous pourriez essayer quelque chose comme ceci à la place :

 function update_records(form_name) {

    var options = {
      async: false,
      alert_message: "Error submitting form",
      success: function(message) {
        alert(message);
      },
      error : function(){
        alert(this.alert_message);
      }
    };
    $('#' + form_name).ajaxSubmit(options);

  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X