我有一個奇怪的錯誤,可能是服務器端問題。即使響應狀態爲200,我的錯誤回調也始終被觸發!總是得到jQuery.ajax的錯誤回調(Rails)
的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"
}
的Rails //控制器
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。
你得到畸形的JSON回來?螢火蟲怎麼樣? – 2010-07-07 20:31:27
@丹Heberden響應看起來不錯,顯示沒有錯誤答案。當出現錯誤時*紅色* – 2010-07-07 20:34:41
那麼,RED通常是400錯誤。加載網絡選項卡,發出請求並檢查響應 - 是否有效?它是多餘的文本JSON?也許可以通過jsonlint.com運行它來驗證它? – 2010-07-07 20:41:24