Фон
Сначала я хотел загрузить файл через json и получить ответ таким же образом.
Я использую:
Я скоро узнал, что вы не можете получить ответ в json . Итак, я следую этому совету и возвращаюсь в виде текста.
Я могу заставить все работать после удаления предварительных тегов. Уродливое решение, но это ужасная проблема.
Проблема
Теперь моя проблема обработка ошибок .
Вот 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
, когда он выходит из строя, он просто чувствует себя грязным, потому что обратный вызов успеха всегда выполняется.
Как использовать функцию обратного вызова с ошибкой?