我使用 jQuery.everyTime() 函数进行了 ajax 调用。我有一个组合框,我在其中选择一些图形名称并动态调用 ajax 函数,返回一个 json 并每 10 秒在视图中创建图表。
一切正常,但是当我选择另一个图形名称并单击函数时,我不仅拥有新图形,而且还得到了旧图形(作为请求),所以每次单击新图形时(让我们说8个名字)我会同时收到8个请求,并且会显示最新的ofc(但如果你签入firebug,你会看到8个请求)。
这是我的 ajax 函数:
var selected = $("#name_list :selected").val();
$(".title_graph").text(selected);
var j = jQuery.noConflict();
j("#hour").everyTime(10000,function(i){
j.ajax({
type: "GET",
url: "getchartdata?graphName=" + selected +"&subgroup=hour",
cache: false,
success: function(jsonData){
var data = eval(jsonData);
drawChart(data, data[0][0], data[0][1]);
}
})
});
我想取消以前的 ajax 调用而不必刷新页面。我能做到吗?就像在函数的最开始放某种“停止”,真的不知道。我见过 ajaxName.abort() 解决方案,但我相信它不能应用于我需要的东西。
提前致谢。
添加:
Travis 的建议是这样的:
function getChartsByGraphName() {
var selected = $("#name_list :selected").val();
var ajaxCallHour;
$(".title_graph").text(selected);
var j = jQuery.noConflict();
j("#hour").everyTime(10000,function(i){
ajaxCallHour && ajaxCallHour.abort();
ajaxCallHour = j.ajax({
type: "GET",
url: "getchartdata?graphName=" + selected +"&subgroup=hour",
cache: false,
success: function(jsonData){
var data = eval(jsonData);
drawChart(data, data[0][0], data[0][1]);
}
})
});
}
但它仍在发送旧的 ajax 请求。