список рассылки с использованием JQuery, Sinatra, HAML завершается с «неопределенным» адресом электронной почты - PullRequest
1 голос
/ 19 октября 2010

Так или иначе, простая форма, которую я должен подписать на список рассылки (который добавляет электронное письмо в группу Служб Google, используя gdatav2rubyclientlib ), кажется, иногда терпит неудачу.Форма отправляется через POST через jQuery, а приложение Sinatra (работает на nginx / Passenger) обрабатывает POST и отправляет мне подтверждение по электронной почте.Иногда я получаю электронные письма, которые "не определены" подписаны.Каким-то образом значение, которое вводит пользователь, теряется, но я не уверен, как и почему.,.

Вот форма HAML, из которой происходит POST:

%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!

Вот Javascript, который делает POST: $ ('# mailing_list_signup_button'). Click (function () {var email_address)= $ ('input # mailing-list-signup'). 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; });
  });

Вот мой обработчик маршрута для запроса 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

Любые мысли приветствуются!

1 Ответ

0 голосов
/ 19 октября 2010

Я бы добавил проверку в поле адреса электронной почты как минимум на стороне сервера, но вы также можете выполнить первоначальную проверку на стороне клиента (используя regex или jQuery Validation ).

Если поле электронной почты не содержит действительный адрес электронной почты, не отправляйте запрос на добавление участника.

...