我有一个使用 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 %>
Controller 操作:
def thank_you
@name = params[:name]
@email = params[:email]
@message = params[:message] || "Hello!"
UserMailer.contact_form(@email, @name, @message).deliver
end
最佳答案
仔细检查您的 JavaScript 绑定(bind)。
$("#AJAX-form").on(...)
正在寻找id=“AJAX-form”的元素。您的表单似乎具有 class="AJAX-form"。
要么绑定(bind)到类
$(".AJAX-form").on(...)
或更改您的表单 ID 以匹配
<%= form_tag("/pages/thank_you", remote: true, id: 'AJAX-form') do %>
关于jquery - AJAX 成功响应不起作用 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270855/