用户离开页面时如何忽略jQuery.ajax错误?

时间:2015-12-11 10:06:31

标签: php jquery

我们的页面上有很多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.

0 个答案:

没有答案