好的,所以:Rails 2.1,使用 jRails 和 jQuery 1.7。
我有一个我想用 ajax 提交的表单;这是在一个花哨的盒子里(虽然我认为这不会有任何区别):
<% form_tag({ :action => :mail_by_user }, :id => "order_problem_form") do %>
...
<%= submit_tag "Submit", :class => "downloaded" %>
<% end %>
我有我的 application.js:
$(document).ready(function () {
...
$("#order_problem_form").submit(function() {
$.ajax({
type: "POST",
beforeSend: function(xhr) { xhr.setRequestHeader("Accept", "text/javascript"); },
dataType: "script",
url: this.action,
data: this.serialize()
});
return false;
});
我的控制器:
def mail_by_user
#here we send to delayed_job
OrderMailer.delay.deliver_problem_with_order(params)
respond_to do |format|
format.html
format.js { render :layout => false }
end
end
除了它不将 ajax 请求作为 XHR 发送之外,所有这些都有效,因此总是调用 format.html。我已将 beforeSend 添加到请求中,这是关于此问题的每篇文章和博客都推荐的。
我不确定我做错了什么 - 有人有什么想法吗?我能想到的最好的事情是 jRails 正在做一些干扰,但 AFAIK 它主要用于连接 remote_fors 和内联 js rails 的东西。我不知道它会对我的 jquery 做什么。