JavaScript get variable from function
我在JavaScript方面不专业,我在网上看到了很长时间的搜索。
我从另一个函数获取变量时遇到问题。 我的代码看起来像这样:
1 2 3 4 5 6 7 8 | var variabeltje; $.post('js/ajax/handle_time.php', {'time': $(this).find('input').val()}, function(data) { alert(data); variabeltje=data; } ); alert(window.variabeltje); |
变量
编辑:
我把它改成了人们所说的,我现在有了这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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()); } } |
但现在$(this)没有传入函数。 我怎么解决这个问题?
因为它是异步的,所以只有在ajax调用完成后才能使用数据,所以你必须修改你的代码才能使用它并等到ajax完成之后再做你的东西:
1 2 3 4 5 | var XHR = $.post('js/ajax/handle_time.php', {time: $(this).find('input').val()}); XHR.done(function(data) { console.log(data); }); |
或其他功能:
1 2 3 4 5 6 7 8 9 | 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); }); } |
编辑:
基于您的编辑,它看起来像是一个范围问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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()); } } |
这是因为$ .post方法异步运行。
请在SO上查看这个问题。
编辑:您可以更改您的代码并将post post方法放在成功触发的匿名函数体内。 如下:
1 2 3 4 5 6 7 | $.post('js/ajax/handle_time.php', {'time': $(this).find('input').val()}, function(data) { alert(data); variabeltje=data; alert(window.variabeltje); // or whatever function you need to call, call it here... } ); |
问题是
如果需要同步执行,可以使用