【问题标题】:jQuery Form with Paperclip带有回形针的 jQuery 表单
【发布时间】:2013-04-27 11:17:13
【问题描述】:

我正在使用 jQuery FormPaperclip 将文件从浏览器上传到我的 Rails 应用程序。

没有 jQuery 表单:

params = {...
"pic"=>#<ActionDispatch::Http::UploadedFile:0x007f9af9faf0f0
...}

使用 jQuery 表单:

params = {...
"pic"=>"my_file.png"
...}

我正在使用此代码来启用插件:

$('form').ajaxForm(function(){ alert('done'); });

这是我的表格:

<form action="/users" method="POST" enctype="multipart/form-data">
  <input type="file" name="user[avatar]">
</form>

更新

当我需要时,jQuery 表单正在使用Content-Type:application/x-www-form-urlencoded 发送数据 Content-Type:multipart/form-data。我注意到这与 jQuery Form 官方页面相比。

我更改了我的 jQuery 表单代码:

...
contentType: 'multipart/form-data',
success:function(){ alert('done')
...

但内容类型仍然是 url 编码的。

我不确定这是否与多部分/表单数据有关。我该如何调试这个问题?

【问题讨论】:

  • 表单是什么样的?是否有 enctype="multipart/form-data"
  • 正在更新...使用表单
  • 控制台有js错误吗?你能显示完整的参数哈希吗?
  • 查看我的更新,我认为编码是我的问题,我不知道如何正确设置。
  • 尝试添加 processData: false

标签: jquery ruby-on-rails paperclip jquery-forms-plugin


【解决方案1】:

来自 jQuery 文档(source)...

processData (default: true)

"默认情况下,数据作为对象传入data选项 (从技术上讲,除字符串之外的任何内容)将被处理并 转换为查询字符串,适合默认的内容类型 “应用程序/x-www-form-urlencoded”。如果你想发送一个 DOMDocument 或其他未处理的数据,将此选项设置为 false。"

因此,如果您将此选项设置为 false,它应该可以解决您的问题。

【讨论】:

  • 它没有,很奇怪,因为malsup.com/jquery/form/progress.html 只不过是基本调用和工作。
  • 你能发布 html/view,你没有嵌套表单什么的吗?
  • 我有 jquery_ujs,将在禁用的情况下进行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 2012-11-17
相关资源
最近更新 更多