【发布时间】:2010-12-16 23:30:18
【问题描述】:
我在一个包含一些文件字段的大表单上使用jQuery Form Plugin。后端是 Ruby on Rails。
我无法让 Rails 将 POST 请求类型识别为“文本/javascript”,即使我认为我设置正确。
表格如下:
<form id="listing_form" method="POST" enctype="multipart/form-data" action="/listings">
<input type="text" size="30" name="listing[venue][phone]" id="listing_venue_phone"/>
<input type="file" size="30" name="listing[venue][image]" id="listing_venue_image"/>
...plus tons of other fields
js看起来像:
$("#listing_form").ajaxForm({ dataType: 'script' });
我还声明:
jQuery.ajaxSetup({
'beforeSend': function(xhr) {xhr.setRequestHeader('Accept', 'text/javascript')}
});
请求到达控制器,但 Rails respond_to 块将其视为普通的 html 请求。此外,Firebug 显示解析器错误,无法在控制台中显示请求和响应标头。
如果我删除文件字段并仅发布文本字段,respond_to 块将请求作为 js 请求处理并正确执行 create.js.erb 文件。
如何让 Rails 正确响应请求?谢谢。
【问题讨论】:
-
jQuery 表单插件的
dataType选项是jQuery 的ajax方法的dataType选项的代理。这意味着 XHR 期待一个带有 text/javascript 内容类型的 response。它与发送的内容无关。 -
感谢您的回复。我得到的那部分,我已经编辑了我的帖子以澄清我的问题。
标签: jquery ruby-on-rails ajax file upload