JavaScript从函数中获取变量

Mar*_*nix 5 javascript variables jquery function

我不是JavaScript的专业人士,我已经在网上看了很久的搜索.

我从另一个函数获取变量时遇到问题.我的代码看起来像这样:

var variabeltje;
$.post('js/ajax/handle_time.php', {'time': $(this).find('input').val()},
  function(data) {
    alert(data);
    variabeltje=data;
  }
);
alert(window.variabeltje);
Run Code Online (Sandbox Code Playgroud)

变量variabeltje必须从数据中获取信息.当我把警报放在下面variabeltje=data它它正在工作,但是我需要在函数之后的数据变量.

编辑:

我把它改成了人们所说的,我现在有了这个:

                var XHR = $.post('js/ajax/handle_time.php', {time: $(this).find('input').val()});
                XHR.done(function(data) {
                    console.log(data); 
                    getData(data);
                }); 

                function getData(data) {
                if(data == 'true') {
                    alert(data);
                    $(this).unbind('keypress');
                    $(this).html($(this).find('input').val());
                }
                }
Run Code Online (Sandbox Code Playgroud)

但现在$(this)没有传入函数.我怎么解决这个问题?

ade*_*neo 4

由于它是异步的,数据仅在 ajax 调用完成后才可用,因此您必须修改代码才能使用它,并等到 ajax 完成后才能完成您的工作:

var XHR = $.post('js/ajax/handle_time.php', {time: $(this).find('input').val()});

XHR.done(function(data) {
    console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

或在其他函数中:

function XHR(time){
   return $.post('js/ajax/handle_time.php', {time: time});
}

function doStuff(element) {
    XHR($(element).find('input').val()).done(function(data) {
        console.log(data);
    });
}
Run Code Online (Sandbox Code Playgroud)

编辑:

根据您的编辑,这看起来像是一个范围问题:

var self = this,
    XHR = $.post('js/ajax/handle_time.php', {time: $(self).find('input').val()});

XHR.done(function(data) {
    console.log(data); 
    getData(data);
}); 

function getData(data) {
    if(data == 'true') { //normally you'd try to pass true as a boolean, not string
      alert(data);
      $(self).unbind('keypress').html($(self).find('input').val());
    }
}
Run Code Online (Sandbox Code Playgroud)