我们的页面上有很多JQuery AJAX调用。
其中一些需要几秒钟才能完成。
我们注意到当用户在其中一个调用返回之前离开页面时,会执行jQuery.ajax错误事件。
虽然我们想要捕获可能发生的其他错误,但我们不认为用户在AJAX处理完成之前转到另一个页面是一个错误,因此我们如何在下面的示例中禁止此操作,执行警报?
的index.php
<html>
<body>
<div><input id="first"/></div>
<button id="buttonProcess">process it</button> <span id="loadingMessage" style="display:none">Calculating...</span>
<div id="answer"></div>
<a href="secondpage.php">second page</a>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$('#buttonProcess').click(function() {
var elemLoadingMessage = $('#loadingMessage');
elemLoadingMessage.show();
jQuery.ajax({
type: "POST",
url: "process.php",
data: {
"first": $('#first').val()
},
dataType: "html",
success: function(json) {
var data = JSON.parse(json);
var answer = htmlEncode(data['answer']);
$('#answer').html(answer);
elemLoadingMessage.hide();
},
error: function()
{
alert("an error occurred.");
}
});
});
function htmlEncode(html) {
return $('<div />').text(html).html()
}
</script>
</body>
</html>
process.php
<?php
$first = intval(filter_var($_POST['first'], FILTER_SANITIZE_STRING));
$answer = $first * $first;
$data = [];
$data['answer'] = $answer;
sleep(2);
echo json_encode($data);
secondpage.php
This is some other page.