3

我正在使用 remotipart 插件进行 Ajax 图像上传。最近我将 Rails 版本从 3.1.10 升级到 3.2.13。升级 rails 版本后,我发现 ajax 图片上传不起作用。

我有使用 remotipart 插件提交图像并呈现响应的表单。但是在 rails 升级后我无法呈现响应。在调查这个问题时,我发现响应被 textarea 块包裹,因此没有被渲染。

我提到了一些相关的 stackoverflow 问题以及 remotipart 用户在 github 上报告的问题,但无法找出任何解决此问题的方法。

即: 当包含带有回形针的附件时,ajax 发布请求以 html 元素响应

Rails 3.2.8 的回形针和 Ajax 问题

https://github.com/JangoSteve/remotipart/issues/89

有人能建议我如何解决这个问题或我做错了什么吗?

谢谢并恭祝安康,

4

4 回答 4

2

您可以在 js.erb 回调文件上执行此操作:

<% if remotipart_submitted? %>
   //this will be executed when a file is uploaded
   $("#div").html("<%= escape_javascript( render "form" ).gsub('&quot;', "'") %>");
<% else %>
   $("#div").html("<%= escape_javascript( render "form" ) %>");
<% end %>
   //Here you can put more js code

由于您没有发布自己的代码,因此我使用了示例代码。有了这个,你不需要降级你的远程部分。在https://github.com/JangoSteve/remotipart/issues/89找到了这个解决方案。为我工作。

于 2014-02-04T18:54:07.337 回答
0

对我来说,这个问题的唯一解决方案是编写自定义表单提交函数,它发送带有表单数据的 Ajax 请求。这不是最佳解决方案,因为 FormData 仅受新浏览器 (IE10+) 支持。

这是咖啡稿:

formAjaxSubmit = ($form, $url) ->
  $formData = new FormData($form[0])

  $.ajax(
    type: 'POST'
    url: $url
    data: $formData
    dataType: 'JSON'
    processData: false
    contentType: false # this is crucial line for $.ajax to work with formData
    error: (xhr, status, error) ->
      $.fn.process_ajax_error(null, xhr, status, error)
    success: (data, status, xhr) ->
      $.fn.process_ajax_success(null, data, status, xhr)
  )
  return false

论据:

  • $form - jQuery 表单对象,例如$('#myForm')
  • $url - sumbission url,通常它应该具有表单动作值 $('#myForm').attr('action')

$.fn.process_ajax_...- 这些是自定义响应处理函数

于 2015-01-28T15:20:03.170 回答
0

这就是最终为我解决问题的原因。也来自这里:https ://github.com/JangoSteve/remotipart/issues/89

之前与 gsub 的类似建议为我生成了一些无效的 json/js。下面的这个解决方案奏效了!

<% if remotipart_submitted? %>
 $('.form-wrapper').html("<%= j "#{render('form')}" %>");
<% else %>
 $('.form-wrapper').html("<%= j render('form') %>");
<% end %>
于 2016-11-29T16:24:13.200 回答
0

希望您找到了解决方案。输入 data: {type: :script}表格应该可以正常工作

于 2015-12-07T06:54:01.430 回答