所以我已经在这个问题上坚持了很长时间。基本上我有一个位于index.html的按钮(#action)。我有第二页:number.html。我试图从index.html获取.receiver范围。来自number.html的.success内容或.failure内容,具体取决于是否在不到2秒的时间内点击了#action。
以下是代码:
$(function() {
var ajaxRetrieve = function(callback) {
$.ajax({
url: 'number.html',
method: 'POST',
success: function(responseData) {
callback(responseData);
},
error: function(responseData) {
alert('Check yourself');
}
});
}
var flag = 0;
$('#action').on('click', function() {
flag = 1;
});
if (flag == 1) {
ajaxRetrieve(function(data) {
$('.receiver').html($(data).find('.success'));
});
} else {
setTimeout(function() {
ajaxRetrieve(function(data) {
$('.receiver').html($(data).find('.failure'));
});
}, 3000);
};
});
问题:点击后,我从未收到.success内容,而且我没有错误消息。但是2秒后,.failure实际上出现了。我尝试了几种方法使它工作,但它没有。我还检查了标记值是否在单击警告框时更改,并且
答案 0 :(得分:0)
您需要在on click
函数中包含ajax调用,否则if
逻辑只会在页面加载时调用,而不会再次调用。
$(function() {
var ajaxRetrieve = function(callback) {
$.ajax({
url: 'number.html',
method: 'POST',
success: function(responseData) {
callback(responseData);
},
error: function(responseData) {
alert('Check yourself');
}
});
}
var flag = 0;
$('#action').on('click', function() {
flag = 1;
flagCheck();
});
var flagCheck = function() {
if (flag == 1) {
ajaxRetrieve(function(data) {
$('.receiver').html($(data).find('.success'));
});
} else {
setTimeout(function() {
ajaxRetrieve(function(data) {
$('.receiver').html($(data).find('.failure'));
});
}, 3000);
};
}
});