Backbone model.destroy()在正常工作时为什么会调用错误回调函数?

5 浏览
0 Comments

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

0