Javascript 处理多个Ajax请求:ClearTimeout
我有来自MySQL请求的元素。Javascript 处理多个Ajax请求:ClearTimeout,javascript,ajax,Javascript,Ajax,我有来自MySQL请求的元素。 它们都有唯一的id,也作为参数插入onclick调用函数中 每次单击都会导致将数据搜索到数据库中。这将一直执行,直到数据库发送了预期的答案。当预期答案出现时,函数需要停止 我不知道如何知道,当预期数据到达时,如何停止此功能。 我无法将var x设置为其他值,并且var x未定义 函数搜索(id){ document.getElementById(id).style.color=“红色”; var x=setInterval(函数(){answer(id)},10
它们都有唯一的
id
,也作为参数插入onclick调用函数中
每次单击都会导致将数据搜索到数据库中。这将一直执行,直到数据库发送了预期的答案。当预期答案出现时,函数需要停止
我不知道如何知道,当预期数据到达时,如何停止此功能。我无法将
var x
设置为其他值,并且var x未定义
函数搜索(id){
document.getElementById(id).style.color=“红色”;
var x=setInterval(函数(){answer(id)},1000);
}
功能应答(id){
document.getElementById(“结果”).innerHTML=id;
/*
AJAX请求,查找anwser
若有(答复)
{
clearTimeout(x);//未定义变量x
}
*/
}
点击
点击
您正在函数内声明X,无法在函数外访问它
试着这样做:
var x;//这里有一个全局变量
功能搜索(id){
document.getElementById(id).style.color=“红色”;
return setInterval(函数(){answer(id)},1000);//返回时间间隔id
}
功能应答(id){
document.getElementById(“结果”).innerHTML=id;
清除超时(x);
/*
AJAX请求,查找anwser
若有(答复)
{
clearTimeout(x);//未定义变量x
}
*/
}
点击
点击
创建间隔对象
var intervals = {};
function search(id) {
document.getElementById(id).style.color = "red";
intervals[id] = setInterval(function () {answer(id)}, 1000);
}
function answer(id) {
document.getElementById("result").innerHTML = id;
/*
AJAX request, looks for an anwser
if(isAnswered)
{
clearTimeout(intervals[id]);
}
*/
}
function search(id) {
document.getElementById(id).style.color = "red";
answer(id);
}
function answer(id) {
document.getElementById("result").innerHTML = id;
/*
AJAX request, looks for an anwser
if(!isAnswered)
{
window.setTimeout( function () { answer(id); }, 1000);
}
*/
}
最好使用setTimeout,而不用担心时间间隔
var intervals = {};
function search(id) {
document.getElementById(id).style.color = "red";
intervals[id] = setInterval(function () {answer(id)}, 1000);
}
function answer(id) {
document.getElementById("result").innerHTML = id;
/*
AJAX request, looks for an anwser
if(isAnswered)
{
clearTimeout(intervals[id]);
}
*/
}
function search(id) {
document.getElementById(id).style.color = "red";
answer(id);
}
function answer(id) {
document.getElementById("result").innerHTML = id;
/*
AJAX request, looks for an anwser
if(!isAnswered)
{
window.setTimeout( function () { answer(id); }, 1000);
}
*/
}
你刚刚创建了一个新的bug,当他们点击两个divs时,把它放在一个全局文件中,他们都覆盖了。你的第一个答案成功了,谢谢!但我需要看看是否每秒都有新的数据。为什么要编辑?“但我需要看看是否每秒都有新的数据。为什么”啊?你在说什么…你的第一个答案成功了,谢谢!但我需要看看是否每秒都有新的数据。为什么要编辑?