У меня странная ошибка, скорее всего, это проблема на стороне сервера. Мой обратный вызов ошибки всегда срабатывает, даже если статус ответа 200!
Javascript // клиент
function save_pomodoro(){
j.ajax({
url: '/app/save_pomodoro',
dataType: 'json',
cache : false,
success: save_pomodoro_suc,
error: save_pomodoro_err,
data: {
bar: 'foo'
}
})
}
function save_pomodoro_suc(data){
alert("Pomodoro Saved Succesfuly")
}
function save_pomodoro_err(data){
show_error(data.status, data.responseText) // on success => 200, "OK"
// on fail 400, "bla bla bla"
}
Рельсы // Контроллер
def save_pomodoro
...
p = Pomodoro.new( params[:bar] )
if p.save
respond_to do |format|
format.html { redirect_to :action => 'index' }
format.js { render( :json => "OK" ) }
end
else
respond_to do |format|
format.html { redirect_to :action => 'index' }
format.js { render( :json => p.errors.full_messages.to_json, :status => 400 ) }
end
end
end
У меня есть другая функция (сервер ajax +) на том же контроллере, у которого есть рабочие обратные вызовы.
Это загадочно для меня, поэтому любые идеи помогут
Обновление: найдена ошибка:
format.js { render( :json => ["OK"] ) }
Очевидно, что строка сама по себе не является допустимым JSON.