バックグラウンド
私は最初にjson経由でファイルをアップロードし、その方法でも応答を取得したいと考えていました。
私が使用しているもの:
- Rails 3
- ajaxForm
私はすぐにあなたが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
ますが、成功コールバックが常に実行されるのは汚い感じがします。
エラーコールバックを利用するにはどうすればよいですか?