Jquery没有从Ajax发送Rails正确的格式

时间:2011-11-16 03:28:46

标签: jquery ruby-on-rails ajax jrails

好吧,所以:Rails 2.1,使用jRails和jQuery 1.7。

我有一个我想用ajax提交的表单;这是在一个fancybox(虽然我认为这没有任何区别):

<% 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做了什么。

1 个答案:

答案 0 :(得分:0)

您可以这样做:

      $("#purchase_cart_order").submit(function(event) {
        // DISABLE THE SUBMIT BUTTON (prevent double clicking)
        $('.downloaded').attr("disabled", "disabled");

        Namespace.order.submitForm();

        return false;
      });

其中Namespace.order.submitForm();正在拨打你的ajax电话。