数据未通过AJAX请求发布

时间:2011-07-15 23:39:26

标签: ruby-on-rails ruby ajax jquery

我有这个AJAX请求:

$("#searchagain_form").submit(function() { 
    $.ajax({
      type: 'POST',
      url: "/searchforward",
      data: {engine: $("#engine_options").find(".on_engine").text()}
    });
});

这是我的表格:

    <%= form_for :searchagain, :url => {:controller => 'results', :action => 'searchforward'}, :html => { :id => "searchagain_form" } do |f| %>
      <%= f.text_field :search, :value => @search, :id => 'searchagain_bar' %>
      <%= f.submit :value => "search!", :id => 'searchagain_submit'  %>
    <% end %>

但是,检查我的日志时,提交表单时似乎没有将数据发布到服务器。知道为什么吗?

3 个答案:

答案 0 :(得分:0)

这里你不需要分号:

{engine: $("#engine_options").find(".on_engine").text();}

除此之外,您还可以使用Charles等流量监控器来监控帖子并确保其发送您想要的内容。

修改:

$('#searchagain_form').serialize() 

还会为您提供包含所有表单数据的对象

答案 1 :(得分:0)

为什么不在ajax params中添加错误处理程序?

$("#searchagain_form").submit(function() { 
    $.ajax({
      type: 'POST',
      url: "/searchforward",
      data: {engine: $("#engine_options").find(".on_engine").text()},
      error: function(jqXHR, textStatus, errorThrown){
          console.log(errorThrown);
      }
    });
});

答案 2 :(得分:0)

您没有取消提交,因此页面将卸载而不是发送ajax请求 在函数中附加return false;

但是,不清楚什么类型的元素#engine_options .on_engine,如果它是文本输入使用val()而不是text()(text()应该不返回任何文本 - 输入)。

当它是textarea时,它将返回元素内的textNode,而不是任何后来修改过的文本。所以也要对textarea使用val()。