- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ajax 将文件上传到我的 Rails 应用程序。为方便起见,我包含了 jQuery.remotipart gem .
// app/assets/javascripts/application.js
//= require jquery.remotipart
我有一个用于上传文件的表单。这些文件由 CarrierWave 处理。
<%= form_for @import, remote: true do |f| %>
<fieldset>
<%= f.label :file, "Attach a CSV file" %>
<%= f.file_field :file %>
</fieldset>
<%= f.submit :upload %>
<% end -%>
不幸的是,当我提交带有附件的表单时,它似乎没有正确到达我的 Controller 操作。 params 哈希将 JS 对象字符串化为键。
Started POST "/file_imports" for 127.0.0.1 at 2012-11-06 01:00:49 +0000
Processing by FileImportsController#create as JS
Parameters: {"object Object"=>{","=>{"object Object"=>{","=>{"object Object"=>nil}}}}}`
在 Chrome 的 Dev Tools 中,我可以看到这确实是发送到服务器的表单数据:
当我删除 remote: true
时,表单可以完美运行(当然,在这种情况下,它会发送 HTML 请求而不是 JS 请求)。
有人知道我做错了什么吗?顺便说一句,我使用的是 Rails 3.2.8 和 Remotipart 1.0.2(最新)。
编辑:进行了更多挖掘。
查看 Remotipart 源代码,我似乎无法理解它应该做什么。例如,在 vendor/assets/javascripts/jquery.remotipart.js
中,第 22 行有以下内容:
settings.data = form.serializeArray();
再往下一点,设置通过 $.rails.ajax(settings)
发送到服务器。
$.fn.serializeArray()
方法返回一个 JS 对象数组。如果我们将它们分配给对 jQuery.ajax()
的调用的数据属性,这将解释我在服务器上看到的序列化对象参数。我们需要传递一个对象作为数据属性,而不是对象数组?
但是,当我尝试将数组展平为一个对象时,整个过程就崩溃了,一个 HTML 请求而不是 JS 请求被发送到服务器。我认为这与 jQuery.ajax.processData == false
这一事实有关。
最佳答案
经过大量调试和阅读大量代码后,我终于拥有了可与 Rails 3.2.8 一起使用的最新 gem。我被三个陷阱钉住了:
(1) 我在提交表单之前禁用了我的文件输入字段,这导致 remotipart 忽略它以包含在 iframe 提交中。您必须确保您的文件输入已启用。这是您看到的错误的直接原因。
(2) 在调试过程中,我用最新的上游源覆盖了 jquery.iframe-transport
,它不支持 X-Http-Accepts
iframe 中的隐藏变量。您必须使用与 remotipart gem 捆绑在一起的版本。
(3) 如果您使用的数据类型不是script
,请不要忘记在表单上连接ajax:complete 的回调。如果您没有在全局 ajax 选项中指定数据类型,或者在表单上使用数据类型属性,则这是默认设置。
关于javascript - jQuery Remotipart 发送 [object Object] 到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13242988/
我正在使用 remotipart 插件进行 Ajax 图片上传。最近我将 Rails 版本从 3.1.10 升级到 3.2.13。升级 rails 版本后,我发现 ajax 图片上传不起作用。 我有使
我是一名新的 RoR 程序员,在我使用 remotipart 上传文件并将其与 POST 请求一起提交给 Controller 后,我目前正试图让我的 js 工作。基本上,单击提交按钮后,POST 请
使用 Ruby on Rails 4 和 Ruby 2。 这是我的简单 Controller 操作。当验证失败时,我呈现"new"操作并将 View 的内容注入(inject) .ajax-targe
我正在使用 remotipart 使用 ajax 上传和升级图像,问题是当我编辑项目时,ajax 更新数据,但 remotipart(https://github.com/leppert/remoti
我构建了一个 Web 服务,它使用 remotipart gem 将文件上传到服务器。用于传输数据的形式是ajax形式(remote => true)。一切正常,文件被保存等。 问题是,jquery
当用 jquery 和 rails 替换 html 时(在 4.0.4 上测试),以下工作: replace.js.erb的内容 $('#my_div').html(""); _my_partial.
看起来 Remotipart 实际上并未用于提交我的表单,因此当我查看表单提交到的参数时,图像完全被遗漏了。 remotipart_subscribed? 返回 false params: {"utf
我在我的 gemfile 中使用它:gem 'remotipart' 在我的表单 View new.html.erb中定义 'file_browse' %>
我正在尝试使用 ajax 将文件上传到我的 Rails 应用程序。为方便起见,我包含了 jQuery.remotipart gem . // app/assets/javascripts/applic
我一直在努力让 AJAX 上传表单工作。我正在使用 Rails 3.2。我把gem "remotipart", "~> 1.0"在我的 Gemfile 中,运行 bundle install并且安装成
我正在尝试实现一个基于 ajax 事件的进度条,我在许多来源中都读到过。我的特殊问题是我不知道如何将我的自定义事件处理程序绑定(bind)到“remotipart”gem 的 ajax 事件中。 这是
Rails 5 和载波 我加: gem 'remotipart', '~> 1.3.1' 和 //= require jquery.remotipart 我有这样的表格: = simple_form_
我是一名优秀的程序员,十分优秀!