Stop Long Polling Function in JS

ajax, javascript, jquery, long-polling

Solution

The following SO question may provide the answer... Abort Ajax requests using jQuery

Applying that to your code snippet, you might get something along the lines of...

<script type="text/javascript">
var poll_url = 'http://mysite.com/poll/';
var my_ts = <?php $_SESSION['template_timestamp']; ?>;
var poll_xhr;

(function poll(){
    poll_xhr = $.ajax({ 
        url: poll_url,
        type: 'post',
        success: function(data){
            // Code removed
        }, 
        dataType: "json", 
        complete: poll, 
        timeout: 30000 
    });
})();

// To kill the AJAX request, put this where it makes sense
poll_xhr.abort();
</script>

Problem

I have a page where I have implemented a long polling function to check the timestamp of a record, so it will update if the data has been edited. ``` <script type="text/javascript"> var poll_url = 'http://mysite.com/poll/; var my_ts = <?php $_SESSION['template_timestamp']; ?>; (function poll(){ $.ajax({ url: poll_url, type: 'post', success: function(data){ if ((data.ts > 0) { // check if expired if (data.ts > my_ts) { // it has expired, so reload the page $("#dialog-message").html('Record has been edited.'); // show popup $("#dialog-message").dialog({ modal: true, buttons: { Reload: function() { $(this).dialog("close"); $('#pleaseWait').show(); window.location.href = '/records/overview'; } } }); } } else { // is still null console.log('error'); } }, dataType: "json", complete: poll, timeout: 30000 }); })(); </script> ``` The problem I have is that there is also another action which invokes a JS ajax call, which when called I would like to force the long polling function to stop. Is there a way to do this?

Original source

Related problems