我正在使用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
答案 0 :(得分:1)
$.ajax
没有done
个选项。有一个complete
选项
在请求完成时调用(执行成功和错误回调后)。
所以也许你的意思是:
jQuery.ajax(
#...
complete: => @ajaxdone()
)
代替。 jqXHR上有一个done
方法,您可以这样说:
jQuery.ajax(
#...
).done => @ajaxdone()
但是done
是“success
回调选项的替代构造”,因此如果出现错误则不会调用它。如果您希望ajaxdone
始终被调用,请使用always
(其作用类似于complete
选项):
jQuery.ajax(
#...
).always => @ajaxdone()