Backbone model.destroy()在正常工作时为什么会调用错误回调函数?
Backbone model.destroy()在正常工作时为什么会调用错误回调函数?
我有一个Backbone.js模型,当用户在模型的视图中点击链接时,我试图销毁它。视图类似于以下内容(伪代码,因为它是用CoffeeScript实现的,可以在问题底部找到)。
当我在浏览器中点击delete链接时,无论如何都会在控制台中记录Error,即使我的服务器记录了关联数据库记录的成功销毁并返回200响应。当我刷新页面(导致集合从数据库中重新渲染)时,我删除的模型将不复存在。
有趣的是,当我在错误回调中记录response时,它具有状态码200,表示成功,但它还报告了statusText: "parseerror",不知道这是什么意思。我的服务器日志中没有错误。
我做错了什么?
这是来自服务器的响应:
Object
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
isRejected: function () {
isResolved: function () {
overrideMimeType: function ( type ) {
pipe: function ( fnDone, fnFail ) {
promise: function ( obj ) {
readyState: 4
responseText: " "
setRequestHeader: function ( name, value ) {
status: 200
statusCode: function ( map ) {
statusText: "parsererror"
success: function () {
then: function ( doneCallbacks, failCallbacks ) {
__proto__: Object
以下是destroy与之交互的服务器操作(Ruby on Rails):
# DELETE /team/listing_saves/1.json
def destroy
@save = current_user.team.listing_saves.find(params[:id])
@save.destroy
respond_to do |format|
format.json { head :ok }
end
end
以下是喜欢实际使用CoffeeScript的人们的Backbone View的实际实现:
class MoveOutOrg.Views.ListingSaveView extends Backbone.View
tagName: 'li'
className: 'listing_save'
template: JST['backbone/templates/listing_save']
events:
'click a.delete_saved': 'onDestroy'
initialize: ->
@model.bind 'change', this.render
render: =>
renderedContent = @template(@model.toJSON())
$(@el).html(renderedContent)
this
onDestroy: (event) ->
event.preventDefault() # 阻止将哈希添加到URL中
console.log "Listing Destroyed"
@model.destroy
success: (model, response)->
console.log "Success"
console.log model
console.log response
error: (model, response) ->
console.log "Error"
console.log model # 这是ListingSave模型
console.log response