jQuery.everyTime() 関数を使用して ajax 呼び出しを行いました。いくつかのグラフ名を選択し、ajax 関数を動的に呼び出し、json を返し、10 秒ごとにビューにグラフを作成するコンボ ボックスを取得しました。
すべてうまくいきますが、別のグラフ名を選択して関数をクリックすると、新しいグラフだけでなく、古いグラフも (要求として) 取得したので、新しいグラフをクリックするたびに (みましょう8 つの名前を言う) 同時に 8 つのリクエストを取得し、最新のものが表示されます (ただし、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() ソリューションを見てきましたが、必要なものに適用できないと思います。
前もって感謝します。
追加した:
これは、トラビスの提案で現在どのように見えるかです:
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 リクエストを送信しています。