2010-03-03 3 views
1

J'essaie d'envoyer un formulaire avec mootools et en fonction de la réponse du script PHP faire telle ou telle chose. La chose est que je ne parviens pas à utiliser des instructions conditionnelles à l'intérieur de la partie onComplete du code.Mootools Ajax forme réponse

Il me manque quelque chose de vraiment évident sans doute, s'il vous plaît aidez-moi :)

$('formName').addEvent('submit', function(e){ 
    e.stop();      
    var req = new Request.HTML({ 
     url  : 'phpUrl.php', 
     data  : $('formName'), 
     update : $('modify-me'), 
     onComplete: function(){ 
      $('formName').reset(); 
      if($('modify-me').get('text') = "1"){ 
       alert("succeed"); 
       }else{ 
       alert("failure"); 
       } 
      } 
    }).send();      
    }); 

Ce fut ma tentative boiteuse d'utiliser la réponse php dans le code, mais bien sûr, il ne fonctionne pas. Inutile de dire que je suis nouveau à tous ces trucs asynchrones de communication client-serveur, mais je suis vraiment intrigué par cela.

Répondre

3

Vous assignez dans votre instruction if (single =), ne vérifiant pas l'égalité (==). Modifiez la ligne

if($('modify-me').get('text') = "1") 

à

if($('modify-me').get('text') == "1") 
+0

Nice, +1 ici. Mais n'existe-t-il pas un moyen de ne pas avoir à affecter la réponse à un élément avant d'utiliser sa valeur dans les instructions conditionnelles? Je veux dire, ne devrait-il pas y avoir un moyen de discriminer du succès et de l'échec sans faire cette chose laide? – johnnyArt

+0

Je ne suis pas sûr de comprendre - je n'ai pas utilisé MooTools mais un Google semble suggérer que onComplete ne se déclenchera qu'une fois la réponse terminée avec succès? – Macros

+0

terminer avec succès ne signifie pas une réponse particulière du script php, c'est ce que je ne parviens pas à réaliser. Je voudrais utiliser la valeur de la réponse directement sans l'ajouter à un élément auparavant. – johnnyArt

0

Désolé les gars, peut-être que je suis en retard ... Je travaille sur Mootools 1.2.4 pour le côté client et PHP pour le back-end. Ceci est la façon dont je soumets les formes et obtenir une réponse du serveur ...

$('myFormID').set('send', { 
     noCache: true, 
     onRequest: function(){ 
      // show some rotating loader gif... 
     }, 
     onComplete: function(response) { 
      // hide the loader gif... 
      objJson = JSON.decode(response); 
      if(objJson.success){ 
       // do your success stuff... 
       alert(objJson.msg); 
      } else { 
       alert(objJson.msg); 
      } 
     }, 
     onFailure: function(){ 
      alert("Request Aborted."); 
     } 
    }).send(); 

Dans mon cas, la forme est déclenchée par submit un bouton, mais pourrait être tout ce que ... regardons du côté du serveur (I utiliser PHP, mais toute autre langue est bonne)

if($somethingWentWrong){ 
    echo json_encode(array("success" => false, "msg" => "Check your form.")); 
} else { 
    echo json_encode(array("success" => true, "msg" => "Data saved.")); 
} 

après tous les contrôles côté serveur et validations (et peut-être une mise à jour sur un batabase MySql) Je reviens juste un tableau JSON (c'est whay J'ai un JSON.decode (réponse) sur le côté client-terre) puis juste vérifier la clé "succès" pour savoir si la soumission a réussi sur le côté serveur-lune. Je viens d'ajouter un petit message que je montre dans une alerte. Évidemment, je pourrais utiliser le tableau JSON pour renvoyer beaucoup plus de données au client, mais dans ce cas, c'est suffisant. J'espère que cela aidera et s'il vous plaît laissez-moi savoir de meilleures solutions.