我有这个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 %>
但是,检查我的日志时,提交表单时似乎没有将数据发布到服务器。知道为什么吗?
答案 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()。