繁体   English   中英

Rails 3图像上传表单使用http而不是AJAX提交

[英]Rails 3 Image upload form submitting with http instead of AJAX

我正在处理一个表单,以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,不重定向,不重新加载页面。

通过安装Remotipart gem使其正常工作。 要使用ajax表单提交上传图像文件,这是唯一的方法。 在这里找到git: https : //github.com/JangoSteve/remotipart

jQuery form.sumbit()以正常方式(非Ajax)提交表单。 您必须采取其他措施:

$('#submitButton').click( function() {
    $.ajax({
        url: 'some-url',
        type: 'post',
        dataType: 'json',
        data: $('#myForm').serialize(),
        success: function(data) {
              // ... do something with the data...
        }
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM