0

我在 Rails 上有一个主干应用程序,它使用新的模型属性进行响应。

  save: ->
    self = @
    attributes = {}
    @$el.children('.table').find('input, textarea').each ->
      attributes[ $(@).attr 'name' ] = $(@).val()
      self.$el.find('.text.' + $(@).attr('name') ).html $(@).val()

    response = @model.save attributes
    category = response.responseText

    window.response = response
    window.category = category

    console.log response
    console.log response.responseText

在控制台中, response 返回一个对象,但 response.responseText 没有。但是,如果我进入控制台并输入“response.responseText;” (因为我将响应绑定到窗口),它返回文本。

为什么我无法在我的backbone.js 函数中访问该变量,但我可以在控制台中访问该变量,有什么原因吗?

4

1 回答 1

0

Backbone 发出AJAX请求,即异步请求。

console.log response
console.log response.responseText

这些行可能在服务器实际响应之前执行(您不确定,但由于您之前的代码很少,它是)。使用用于处理该问题的回调

response = @model.save attributes success: =>
  console.log response.responseText

或其他回调,诸如此类done。您还可以使用类似的事件sync

于 2013-06-11T21:44:22.250 回答