Ajax Interval Call выдает пустую ошибку при выходе из страницы
Я использую удаленный API для извлечения журналов консоли приложения каждые 2 секунды, используя AJAX. Это прекрасно работает во всех случаях, за исключением того, что пользователь щелкает ссылку на странице, чтобы переместиться в другое место. Это запускает функцию обратного вызова Error, не предоставляя никаких данных, хотя обновление страницы - нет.
Может кто-нибудь сказать мне, что может быть причиной этого и потенциальным решением проблемы?
<script>
var server_id = getUrlParameter('id');
var lastFetchTime = 1;
$(document).ready(function()
{
getConsoleMessages();
setInterval(function()
{
getConsoleMessages();
},2000);
});
function getConsoleMessages()
{
var consoleBox = document.getElementById("console");
$.ajax({
type: "POST",
url: "consoleHandler.php",
data: { 'action': 'getConsoleMessages', 'server_id': server_id, 'since': lastFetchTime },
dataType: 'json',
success: function(data)
{
console.log(data);
var messages = data['message']['chatdata'];
if (messages.length > 0)
{
messages.forEach( function (item)
{
// Skip lines we've already displayed
if (lastFetchTime >= item.timestamp)
{
return;
}
var timestamp = item.time; // /Date(1440823073243)/
var timestamp = timestamp.substring(timestamp.lastIndexOf("(")+1, timestamp.lastIndexOf(")"));
var contents = item.message;
lastFetchTime = item.timestamp;
// Get Date/Time in Milliseconds
var date = new Date(parseInt(timestamp));
var time = pad(date.getHours()) + ":" + pad(date.getMinutes()) + ":" + pad(date.getSeconds());
console_log("<font color='blue'>[" + time + "]</font>" + " " + contents);
});
}
consoleBox.scrollTop = consoleBox.scrollHeight;
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert("Status: " + textStatus); alert("Error: " + errorThrown); alert("Message: " + XMLHttpRequest.responseText);
}
});
};
</script>
consoleHandler.php
$action = $_POST['action'];
$response = array();
switch ($action)
{
case "getConsoleMessages":
{
foreach ($_SESSION['servers'] as $server)
{
if ($server['whmcs_id'] == $_POST['server_id'])
{
$mcmyadmin = new McMyAdmin($server['mcma_user'], $server['mcma_pass'], $server['mcma_ip'], $server['mcma_port']);
$result = $mcmyadmin->getChat($_POST['since']);
$response['status'] = "success";
$response['message'] = $result;
}
}
echo json_encode($response);
break;
}
}