我正在使用jQuery表单插件处理一个包含一些文件字段的大型表单。后台是Ruby on Rails。
该JS代码如下:
我遇到了一个问题,即使我认为我已经正确设置了POST请求类型为“text/javascript”,Rails仍然无法识别它。
表单如下:
<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显示解析错误,并无法在控制台中显示请求和响应头。
如果我删除文件字段并仅POST文本字段,则respond_to块将处理该请求作为js请求,并正确执行create.js.erb文件。
我该如何使Rails正确响应请求呢?谢谢。
dataType
选项是jQuery的ajax
方法中dataType
选项的代理。这意味着XHR期望响应具有text/javascript内容类型。它与发送的内容无关。 - jason