【发布时间】:2015-03-26 03:56:37
【问题描述】:
我有一个使用 AJAX 成功发送的邮件程序,但是当单击提交按钮时,它一直处于按下状态,并且没有显示成功消息。多次单击该按钮会导致提交多个表单。按钮应该重置,并且(根据我的理解)AJAX:success 事件应该生成某种文本以显示它是成功的。
AJAX 脚本(来自rails guides)
<script>
$(document).ready ->
$("#AJAX-form").on("ajax:success", (e, data, status, xhr) ->
$("#AJAX-form").append xhr.responseText
).on "ajax:error", (e, xhr, status, error) ->
$("#AJAX-form").append "<p>ERROR</p>"
</script>
(更新后的)表格:
<%= form_tag("/pages/thank_you", remote: true, id: 'AJAX-form') do %>
<div class="row">
<div class="col-md-2">
<div class="input-group">
<%= text_field_tag :name, nil, class: 'form-control', placeholder: 'Name' %>
</div>
</div>
<div class="col-md-4">
<div class="input-group">
<span class="input-group-addon" id="basic-addon1">@</span>
<%= text_field_tag :email, nil, class: 'form-control', placeholder: 'Email' %>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-6">
<div class="input-group text-area-wide">
<%= text_area_tag :message, nil, class: 'form-control text-area-wide', placeholder: 'Message' %>
</div>
</div>
</div>
<br>
<%= submit_tag 'Send Message', class: 'btn btn-success' %>
<% end %>
控制器动作:
def thank_you
@name = params[:name]
@email = params[:email]
@message = params[:message] || "Hello!"
UserMailer.contact_form(@email, @name, @message).deliver
end
【问题讨论】:
-
$("#AJAX-form")正在寻找 id="AJAX-form" 的元素。您的表单似乎有 class="AJAX-form"。
标签: jquery ruby-on-rails ajax forms