<script>
var interval_time;

function executeQuery() {
    $.ajax({
        method: 'GET',
        url: "${pageContext.request.contextPath}/get-session-timeout",
        success: function(jsonRes, textStatus, jqXmlHttpRequest) {
            console.log('success log session out');
            console.log(jqXmlHttpRequest.status);
        }

    });
    interval_time = setInterval(executeQuery, 30000);
}

function stopInterval() {
    console.log('stop interval hit');
    clearInterval(interval_time);
}
</script>
<script>
$(document).ready(function(e) {
    console.log('ready');
    interval_time = setInterval(executeQuery, 30000);

});
</script>



//FILE UPLOAD AJAX CALL

function uploadJqueryForm() {
    //logic
    $uploadFrm.ajaxForm({
        beforeSend: function() {
            interval_time = setInterval(executeQuery, 30000);
            //logic
        },
        success: function(jsonRes) {
            stopInterval();
            //logic
        },
        error: function(xhr, textStatus,
            errorThrown) {
            stopInterval();
            //logic
        },
        complete: function(xhr, extStatus, errorThrown) {
            stopInterval();
        },
        dataType: "text"
    }).submit();
}
return false;
}
0
Abhishek Nayak 23 juil. 2015 à 11:28

2 réponses

Meilleure réponse

Si vous utilisez setInterval() dans une variable qui l'a déjà sans l'arrêter, vous ne pourrez pas l'effacer. Vous devriez donc utiliser clearInterval() puis setInterval() après.

1
Louis Castro 23 juil. 2015 à 08:34

Vous remplacez interval_time plusieurs fois. Ensuite, lorsque vous appelez stopInterval(), seul le dernier intervalle de interval_time sera arrêté, pas les autres.

1
Thom-x 23 juil. 2015 à 08:33