我正在制作一个通过 AJAX 而不是 http 提交的表单。这是表格:
<%= form_for(:image, :remote => true, :url => {:controller=> 'questions',:action => 'upload'},:multipart => true) do |f| %>
<%= f.file_field :image, :onchange => "$(this).parents('form').submit();" %>
<% end %>
我已经设置了:remote => true
上面的选项并提交了带有onchange
事件的表单。我在控制器中有以下代码:
def upload
if request.xhr?
@image = Image.new(params[:image])
@image.save
respond_to do |format|
format.js { render :layout=>false }
end
else
render :text => 'Request Wasnt AJAX'
end
end
我的操作每次都呈现文本,尽管设置了远程标记,但请求似乎不是 AJAX 样式(即使在最终的 HTML 中也正确显示)。我不知道我哪里出了问题。我已经在 FF 和 Chrome 的最新浏览器版本中对其进行了测试,所以我认为这不是浏览器问题。有任何想法吗 ?
更新:我做了一些更多的调试尝试。问题在于文件字段,如果我用文本字段替换文件字段,则请求是 AJAX(其他一切都保持不变)。但是对于一个文件字段,它总是发送一个非 AJAX 请求。
注意:总体目标是通过 AJAX 请求上传图像,响应不呈现任何内容,不呈现 HTML,不重定向,不重新加载页面。