背景
我首先想通过 json 上传文件并以这种方式获得响应。
我在用着:
- 导轨 3
- ajax表单
我很快发现您无法在 json 中得到回复。因此,我遵循该建议并以文本形式返回。
删除 pre 标签后,我可以使事情正常进行。丑陋的解决方案,但这是一个丑陋的问题。
问题
现在,我的问题是处理错误。
这是JS:
$('form#new_image').submit(function() {
$(this).ajaxSubmit({
dataType: 'text',
beforeSubmit: showLoading,
success: imageUploadSuccess,
error: imageUploadError
});
return false;
});
function imageUploadSuccess(data) {
var jsonObject = $.parseJSON((/<pre>(.+)<\/pre>/.exec(data))[1]);
//Do something
}
function imageUploadError(data) {
alert("FAIL!");
}
即使我以错误响应,成功回调 (imageUploadSuccess) 也会始终执行。
这是我的控制器:
def create
@image = Image.new params[:file]
@image.imageable_type = params[:imageable_type]
@image.imageable_id = params[:imageable_id]
respond_to do |f|
if @image.save
logger.debug "PASSED"
f.text {render :text => @image.to_json}
else
logger.debug "FAIL"
f.text { render :text => "Fail!", :status => 500 }
end
end
end
现在,虽然我可以在失败时返回一个包含其中的 json 对象success: false
,但总是执行成功回调只是感觉很脏。
如何使用错误回调?