2009-08-11 6 views
0

J'essaie de faire un système de commentaire avec jquery et ajax, parfois j'ai besoin d'un utilisateur pour entrer une image captcha quand ils postent trop souvent.Peut jquery ajax post retour plus de 1 variable?

J'utilise le plugin facebox pour jquery avec est une boîte de dialogue de type pop-up,
Je suis DECLENCHEMENT cette case pour ouvrir, lorsque le script backend dit-il que l'utilisateur doit saisir un captcha, il apparaît alors la boîte et charge le fichier php captcha à l'écran.

C'est là où j'ai des problèmes, j'ai besoin de la boîte pour non seulement ouvrir le captcha, mais aussi pour remplir le commentaire dans cette boîte comme un champ de formulaire caché, de sorte que si un utilisateur saisit le code captcha correct, il postera alors un commentaire, sinon, ils approuvent le captcha et rien ne se passera, donc je dois poster le commentaire. De plus, si le captcha se trompe, j'ai besoin de recharger le captcha avec des commentaires encore là, ce qui devrait être facile si je peux faire fonctionner la première partie.

Voici mon code jusqu'ici pour cette partie, quelqu'un peut-il aider?

$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: args, 
    cache: false, 
    success: function (data) { 
     // there was an error so we will show an error message 
     if (data == 'error') { 
      alert(data); 
      //we need the user to submit a captcha to post there data 
     } else if (data == 'captcha') { 
      jQuery.facebox(function() { 
       jQuery.facebox({ 
        ajax: 'captchabox.php' 
       }) 
      }) 
      //everything is all good, let post there comment 
     } else { 
      $('#comments').prepend(data); 
      $(this).remove(); 
     }) 
    }; 

    // remove loading image 
    $('#load').fadeOut(); 
} 
}); 

Répondre

2

Oui, mais cela dépend davantage de ce que vous publiez que de jQuery lui-même; c'est-à-dire la page ou le service web que vous utilisez pour le traitement. Vous pouvez renvoyer un objet complexe à la suite d'un appel de service (à l'aide de JSON ou de XML), de tableaux ou d'une seule réponse. Sur votre process.php, il peut renvoyer un objet de réponse contenant une valeur de succès (true/false), reason/message (chaîne) et tout autre nombre de valeurs dont vous pourriez avoir besoin. Ensuite, dans votre code, vous pouvez vérifier:

if (data.Success) { /* code here */ } else { ... } 

Voir le lien ci-dessous pour le retour JSON via PHP: http://us2.php.net/manual/en/book.json.php

+0

Ok comme les sons des thats la bonne voie d'être sur. Donc, sur mon script de traitement, je peux utiliser json_encode en php, alors je le renvoie à jquery en tant que chaîne json, une fois que je dois le décomposer en ses propres variables, savez-vous comment je peux le faire? – JasonDavis

+0

Vous pouvez utiliser le plugin ici: http://json.org/json2.js - ce n'est pas un plugin jQuery directement mais que John Resig (créateur de jQuery) suggère d'utiliser. – Fooberichu