Я сделал вызов ajax с помощью функции jQuery.everyTime(). У меня есть поле со списком, в котором я выбираю некоторые имена графов и динамически вызывает функцию ajax, возвращает json и создает диаграмму в представлении каждые 10 секунд.Как остановить вызов ajax и запустить новый с новыми параметрами?
Все идет хорошо, но когда я выбираю другое имя графика и щелкаю по функции, у меня не только новый график, но и у меня есть старый (как запрос), поэтому каждый раз, когда я нажимаю новый (скажем, 8 имен), я бы получил 8 запросов одновременно и из последних будет показано (но если вы проверите firebug, вы увидите 8 запросов).
Это моя Аякса функция:
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]);
}
})
});
Я хотел бы, чтобы отменить previus АЯКС звонки без необходимости обновлять страницу. Могу ли я это сделать? например, положить какую-то «остановку» в самом начале функции, не знаю. Я видел решение ajaxName.abort(), но я считаю, что оно не может быть применено к тому, что мне нужно.
Заранее спасибо.
ДОБАВЛЕНО:
Вот как это выглядит сейчас с предложением Трэвиса:
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.
возможно дубликат [ABORt запросов Ajax с использованием JQuery] (http://stackoverflow.com/questions/446594/abort-ajax-requests-using-jquery) – Makoto