0

我正在使用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 编码。

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

4

1 回答 1

1

来自 jQuery 文档(来源) ...

processData (default: true)

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

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

于 2013-04-27T12:58:11.597 回答