Вызовите метод, содержащийся внутри jQuery AJAX, который содержится внутри метода того же класса - PullRequest
0 голосов
/ 15 января 2020

Я пытался получить доступ к некоторым методам того же класса из вызова AJAX внутри одного из методов, но он не работает. В чем может быть проблема здесь? Я получаю эту ошибку Uncaught TypeError: this.createTimeline is not a function см. Комментарии к коду ниже!

//sequenceRender is the class and below is one method
sequenceRender.prototype.ajaxSequence = function(){
    this.ajaxSequence = $.ajax('getSequence.php', {
                    dataType: 'json',
                    timeout: 2000
                });

   this.ajaxSequence.done(function (data, status, jqXhr) {
      console.log(data)
      this.SEQUENCE=data // I cannot access properties 
      this.createTimeline() // or methods from same class
      this.createWells() // from inside here

   })

  this.ajaxSequence.fail(function (jqXhr, textStatus, errorMessage) {
     console.log(errorMessage)
  })
}

1 Ответ

2 голосов
/ 15 января 2020

Похоже, что this будет иметь разные значения, так как вы пытаетесь вызвать его внутри события

Попробуйте добавить изменения ниже и дайте мне знать, если это работает для вас

sequenceRender.prototype.ajaxSequence = function() {
    mainContext = this;
    this.ajaxSequence = $.ajax('getSequence.php', {
                    dataType: 'json',
                    timeout: 2000
                });

   this.ajaxSequence.done(function (data, status, jqXhr) {
      console.log(data)
      mainContext.SEQUENCE=data 
      mainContext.createTimeline() // call the 'this' from here
      mainContext.createWells()

   })

  this.ajaxSequence.fail(function (jqXhr, textStatus, errorMessage) {
     console.log(errorMessage)
  })
}
...