Javascript - 函数不会从另一个函数运行

时间:2018-05-16 07:25:52

标签: javascript jquery ajax

我有一个名为this.create()

的函数
this.create = function() {
  var validate = this.validate();

  if (validate === false) {
    return;

  } else if (document.getElementById("nameID").value == "") {

    alert("Enter an ID");
  } else {
    this.runMapping();

    $.post('http://*************', {

    }, function(data) {

      var results = $.parseJSON(data);

      if (results.status == "fail") {
        alert('FAILED');
      } else {
        ID = (results.data[0].nameID);

        alert("SUCCESS");
        this.setDate();


      }
    });
  }
}

另一个名为this.setDate()的函数:

this.setDate = function() {
  alert("In date");

  $.get('http:**********',
    function(data) {
      var results = $.parseJSON(data);
      date = (results.data[0].date);
      return;
    }
  )
}

现在,如果我将this.setDate()放在它自己的按钮上,它可以正常工作,但是在调用this.create()时拒绝运行,即使alert("SUCCESS")已在this.create()中被警告功能。

我应该补充一点,我是JS的新相对论,所以请原谅我这是否是一个容易犯的错误。我还注意到this.runMapping() this.create()正常工作。

1 个答案:

答案 0 :(得分:2)

这是因为this现在是您调用this.setDate();的函数的上下文,并且其中没有此类函数。

使用箭头功能或保存this对变量的引用,并将您的函数称为

之类的引用
var that = this;
 this.create = function() {
   ....
    that.setDate()
   ...