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?