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)没有传入函数.我怎么解决这个问题?
由于它是异步的,数据仅在 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)
| 归档时间: |
|
| 查看次数: |
827 次 |
| 最近记录: |