2010-07-08 6 views
0

J'essaie d'ajouter ajax formulaire soumettre à ma page Web. Le formulaire ajoutera l'e-mail de l'utilisateur à la newsletter. J'ai trouvé cette solution: http://www.tutorialswitch.com/web-development/quick-and-simple-ajax-forms-with-json-responses/ et maintenant j'essaye de le réécrire pour django.(Django) Ajax formulaire soumettre avec jquery-formes

J'ai donc ma forme, inclus à la page principale:

<div id="form-newsletter-message"></div> 
    <form action="{% url newsletter_add %}" method="post" class="form-newsletter" id="form-newsletter"> 
     <input type="text" class="form-text" name="email" /> 
     <input type="submit" value="Add" class="form-submit" /> 
    </form> 

Voici mon application.js, seul changement est le nom de la forme:

function setupAjaxForm(form_id, form_validations){ 
    var form = '#' + form_id; 
    var form_message = form + '-message'; 

    var disableSubmit = function(val){ 
     $(form + ' input[type=submit]').attr('disabled', val); 
    }; 

    $(form).ajaxSend(function(){ 
     $(form_message).removeClass().addClass('loading').html('Loading...').fadeIn(); 
    }); 

    var options = { 
     dataType: 'json', 
     beforeSubmit: function(){ 
      if(typeof form_validations == "function" && !form_validations()) { 
       return false; 
      } 
      disableSubmit(true); 
     }, 
     success: function(json){ 
      $(form_message).hide(); 
      $(form_message).removeClass().addClass(json.type).html(json.message).fadeIn('slow'); 
      disableSubmit(false); 
      if(json.type == 'success') 
       $(form).clearForm(); 
     } 
    }; 
    $(form).ajaxForm(options); 
} 
$(document).ready(function() { 
    new setupAjaxForm('form-newsletter'); 
}); 

URL:

urlpatterns = patterns('', 
        url(r'^newsletter_add/$', 'views.newsletter_add', name="newsletter_add"), 
) 

Et maintenant, le problème est avec la vue. Fonder sur l'échantillon fonction .php, j'ai créé ceci:.

if request.method == "POST":  
    try: 
     e = NewsletterEmails.objects.get(email = request.POST['email']) 
     message = _(u"Email already added.") 
     type = "success" 
    except NewsletterEmails.DoesNotExist: 
     logging.debug("nie dodany") 
     try: 
      e = NewsletterEmails(email = request.POST['email']) 
     except DoesNotExist: 
      pass 
     message = _(u"Email added successfully.") 
     type = "success" 
     e.save() 

Résultat de c'est lorsque je clique sur le bouton d'envoi, je reçois le texte « Chargement ... » et rien bouton Soumettre est désactivé en permanence (jusqu'à ce que je redémarre le navigateur) mais mon adresse e-mail est ajoutée.Il n'y a pas de réponse et firebug montre "500 Internal Server Error" Qu'est-ce que je fais mal

Répondre

0

Votre première étape ici est de voir ce qui se passe avec la requête Ajax. Je recommande Firefox avec l'addon Firebug pour le débogage des problèmes Ajax, même si j'utilise Chrome pour la navigation normale.Activez l'onglet de la console dans Firebug, et actualisez votre page.La requête Ajax devrait apparaître là, et vous pouvez l'agrandir et voir s'il était un er Ror page retournée. Avec Firebug, vous pouvez voir la page d'erreur qui a été retournée et comprendre ce qui s'est mal passé.