Coffeescript,Backbone - jQuery.ajax完成了回调函数范围

时间:2014-01-15 16:36:41

标签: jquery ajax backbone.js

我正在使用AJAX将字符串化的集合发送到JSON。它被解码,验证并保存到会话中。

适用于Firefox - $ _SESSION ['key']可用,但在Chrome中不起作用。

我认为当我使用 window.location.href ='checkout'时,AJAX很快就会出现问题。我想修复它但我无法从内部回调或从ajaxdone方法中记录。

我不明白为什么要添加'=>'没有帮助。它将整个对象缓存到_this,不是吗?

send: (data) ->
  console.log this
  jQuery
    .ajax({
      type: "POST",
      url: 'checkout',
      data: {order: data},
      dataType: 'json',
      done: (data) => 
        this.ajaxdone()
    })
  this

ajaxdone: ->
  #window.location.href = 'checkout'
  console.log this

1 个答案:

答案 0 :(得分:1)

$.ajax没有done个选项。有一个complete选项

  

在请求完成时调用(执行成功和错误回调后)。

所以也许你的意思是:

jQuery.ajax(
  #...
  complete: => @ajaxdone()
)

代替。 jqXHR上有一个done方法,您可以这样说:

jQuery.ajax(
  #...
).done => @ajaxdone()

但是done是“success回调选项的替代构造”,因此如果出现错误则不会调用它。如果您希望ajaxdone始终被调用,请使用always(其作用类似于complete选项):

jQuery.ajax(
  #...
).always => @ajaxdone()