【发布时间】:2013-05-01 08:02:21
【问题描述】:
我正在尝试使用异步提交表单来上传图片,这是我的 Rails HTML:
<%= form_for(:image, :url => {:controller=> 'questions',:action => 'upload_Qimage'}, :html => {:id=>'qimage_upload'}) do |f| %>
<%= f.file_field :image, :onchange => " return uploadImage() ; " %>
<%= f.hidden_field :id , :value => Digest::MD5.hexdigest((current_user.id + Time.now.to_i).to_s )[0,7] %>
<% end %>
这是我的js函数uploadImage():
function uploadImage ()
{
$('#qimage_upload').submit() ;
$('#qimage_upload').submit( function() {
return false ;
}
忽略提交函数中的ajax代码,即使注释掉我也无法获得第二个警报。我现在整天都在做这件事,不知道有什么问题。
更新:请注意上面代码中的更新,使用没有回调的简单 submit() 可以工作,但它不符合我的目的,因为它尝试为操作呈现视图。这是 jQuery 版本的问题吗?
第二次更新
这就是我的控制器动作的样子:
def upload_Qimage
@image = Image.new(params[:image])
@image.save
end
无论我尝试使用 jQuery 和 html 做什么,它仍然会尝试渲染视图。该文件与当前更新的 js 一起保存,但是当我不希望它执行任何操作或者只是返回一些数据(不是部分渲染,只是数据)时,它仍然会尝试渲染视图
【问题讨论】:
-
你试过 :remote => true in form_for 标签吗?
-
是的,什么都不做。我的问题是提交功能中的警报。它应该触发,不管里面还有什么。
-
submit 事件将在您提交表单时被调用。但是在您的表单中没有提交。
标签: javascript jquery ruby-on-rails file-upload asynchronous