这个上下文在ajax数据选项中

时间:2016-03-23 20:42:01

标签: javascript jquery ajax

我有data数组和mark_read方法的对象,它将PUT请求发送到我的Rails应用程序。看起来this选项中的data不是对象实例,我该如何解决?

Notifications.prototype = {
  constructor: Notifications,
  ...
  mark_read: function() {
    $.ajax({
      method: "PUT",
      url: '/notifications/mark_read',
      data: this.data.slice(0,5)
    });
  }
  ...
}

2 个答案:

答案 0 :(得分:0)

在尝试从$ .ajax函数内部访问之前,您应该将“this”存储在闭包中。

它应该是这样的

Notifications.prototype = {
  constructor: Notifications,
  ...
  mark_read: function() {
      var me = this;
      $.ajax({
          method: "PUT",
          url: '/notifications/mark_read',
          data: me.data.slice(0,5)
      });
  }
  ...
}

答案 1 :(得分:0)

this的范围是mark_read函数,因此this的上下文是调用Notification对象mark_read()的内容。