2010-10-18 17 views
1

D'une certaine manière, un simple formulaire que je dois vous inscrire pour une liste de diffusion (qui ajoute un email à un groupe Google Apps, en utilisant gdatav2rubyclientlib) semble échouer occasionnellement . Le formulaire est soumis via POST via jQuery, et l'application Sinatra (fonctionnant sur nginx/Passenger) gère le POST et m'envoie une confirmation par e-mail. De temps en temps, je reçois des courriels qui sont «non définis». D'une manière ou d'une autre, la valeur que l'utilisateur tape se perd, mais je ne suis pas sûr de savoir comment ou pourquoi. . .liste de diffusion utilisant JQuery, Sinatra, HAML échoue avec l'adresse email "indéfinie"

est ici la forme HAML dont le POST origine:

%li.sidebar-section 
    %span#mailing-list-slug 
    get on our mailing list 
    <br/> 
    %form{:id => "mailing_list_signup", :method => "post", :action => "/mailinglist/signup/the.grapevine"} 
    %input{:type => 'text', :name => 'email', :value => "enter your email&hellip;", :id => 'mailing-list-signup'} 
    %input{:id => "mailing_list_signup_button", :type => 'submit', :value => 'sign up'} 
    #thanks 
     thanks! you're in! 

Voici le Javascript qui rend le POST. $ ('# mailing_list_signup_button') cliquez sur (function() { var email_address = $ ('entrée # mailing-list-inscription' val());.

$.ajax({ 
    type: "POST", 
    url: "/mailinglist/signup/the.grapevine", 
    data: "email=" + email_address, 
    success: function() { 
     $('#thanks').show('slow'); 
    } 
    }); 

    var email_address = $('input#email').val(); 

    $.post("/mailinglist/signup/the.grapevine", 
    $('form#mailing_list_signup').serialize(), function(result){alert(email_address);}); 
    return false; }); 
    }); 

Voici mon gestionnaire d'itinéraire pour la requête POST

post '/mailinglist/signup/:list' do 
    adminuser = "ADMINUSERNAME" 
    password = "PASSWORD" 
    email = params[:email] 
    mailing_list = params[:list] 
    myapps = ProvisioningApi.new(adminuser,password) 
    myapps.add_member_to_group(email, mailing_list) 
    gmail(:to => 'MYEMAIL', :subject => "HEY HEY GUESS WHAT, #{params[:email]} JUST SIGNED UP FOR #{params[:list]}!", :body => "Totally not joking--") 
end 

Toutes les pensées seraient appréciées!

Répondre

0

J'ajouterais au moins une validation au champ d'adresse du côté serveur, mais vous pouvez également effectuer une vérification initiale côté client (en utilisant un regex ou un jQuery Validation).

Si le champ de courrier électronique ne contient pas d'adresse électronique valide, ne soumettez pas la demande d'ajout du membre.

+0

Oui, c'est logique. Mais je suis toujours confus au sujet de la raison pour laquelle je reçois la valeur "indéfini". Peu importe ce qu'ils ont ajouté, je devrais simplement obtenir la valeur qu'ils ont entrée, n'est-ce pas? – aresnick

+0

Si une variable JavaScript n'est pas définie, elle retournera "indéfini". http://www.w3schools.com/jsref/jsref_undefined.asp – calvinf

+0

Oh je vois, merci! – aresnick