如何通过使用jQuery为ajax设置超时

如何通过使用jQuery为ajax设置超时

在网络编程中,Ajax的使用是为了让结果数据显示在网页的一个部分,而不需要重新加载页面。用户需要执行Ajax请求,并希望在一个时间范围内得到结果。在这种情况下,代码中使用了jquery timeout功能。在基于Ajax的Web应用程序中,会话超时一直是一个非常常见的功能。
在响应式界面中,程序员需要延迟ajax请求,以便在响应前完成一些任务。这可以通过使用jQuery setTimeout()函数来实现。这个函数在给定的一些时间后执行给定的Ajax代码。
语法 :

$.ajax(page_url);
$.ajax(page_url,[options]);

参数:

  • page_url。该参数用于提交数据或检索数据。
  • options。该参数用于保存ajax请求所需的其他配置设置。

下面的例子说明了这个方法。
示例 1:

  • 代码 snippet:
$.ajax({
    url: "test.php",
    error: function(){
        //Error code
    },
    success: function(){
        //Success code
    }
   timeout: 5000 // sets timeout to 5 seconds
});
  • 如果请求成功,成功函数将被执行。有时,如果发生了错误,与其等待更长的时间,不如迅速做出反应。这在错误函数中处理。下面的程序,解释了ajax部分代码中超时选项的实现。超时是一个数字,它规定了处理请求的时间,单位为毫秒。

代码:

<!DOCTYPE html>
 
<html lang="en">
 
<head>
    <meta charset="utf-8">
    <title>Set timeout for ajax using jQuery</title>
    <style>
        body {
            width: 450px;
            height: 300px;
            margin: 10px;
            float: left;
        }
         
        .height {
            height: 10px;
        }
    </style>
 
    <script src=
"http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
 
    <script language="javascript">
        var ajaxObject = null;
 
        // ajaxcall function will handle ajax call
        function ajaxCall() {
 
            var dataquery = 'true';
 
            if (ajaxObject != null) {
                ajaxObject.abort();
                ("#ajaxOutput")
                .html("Ajax aborted for initialization again! ");
                ajaxObject = null;
            }
 
            // creating ajax call
            ajaxObject =.ajax({
 
                // setting the url
                url: "data.php",
 
                data: {
                    dataquery: ''
                },
 
                // Set to 5 seconds for timeout limit
                timeout: 5000,
 
                //Check for success message in ajaxOutput div
                success: (function(response, responseStatus) {
                    if (responseStatus == 'success') {
                        ("#ajaxOutput").html(response);
                    }
                }),
 
                // Check for existence of file
                statusCode: {
                    404: function() {
                        ("#ajaxOutput")
                        .html("File does not exists!");
                    }
                },
               
                // If the time exceeds 5 seconds
                // then throw error message
                error: function(xhr, textStatus, errorThrown) {
 
                    if (textStatus == 'timeout') {
                        $("#ajaxOutput")
                        .html("Error : Timeout for this call!");
                    }
                }
            });
        }
    </script>
</head>
 
<body>
    <h1 style="color:green">GeeksforGeeks</h1>
    <b> Set timeout for ajax using jQuery </b>
    <div class="height"> </div>
    <div>
        <button type="button" onclick="ajaxCall()">
          Send Data
        </button>
        <div class="height"> </div>
        <div id="ajaxOutput"> </div>
 
    </div>
 
</body>
 
</html>
  • PHP文件:在上述例子中使用了以下PHP文件。
<?php
        
    if($_GET["dataquery"]=='true')
    {
        sleep(7);
    }
      
    echo "Welcome to GeeksForGeeks";
?>

输出 :

  • 在点击按钮之前:
  • 点击按钮后:

例子2: setTimeout()是一个jQuery函数,在延迟一个特定的时间限制后执行一个代码片段。例如,延迟一个弹出窗口的特定时间限制,为一个用户访问一些网站。这个方法接受一个指向一个函数的指针作为它的第一个参数。在这个例子中,使用setTimeout()方法将Ajax代码延迟4秒。
代码片段:

function callerFunction(){
  alert("jQuery setTimeOut execution is fine!");
}
setTimeout(callerFunction, 4000);
var callerFunction = function(){
  alert("Execution point!");
};
setTimeout(callerFunction, 4000);

Program:

  • HTML File:
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="utf-8">
    <title>Set timeout for ajax using jQuery</title>
    <style>
        <style> body {
            width: 450px;
            height: 300px;
            margin: 10px;
            float: left;
        }
         
        .height {
            height: 10px;
        }
    </style>
    <script src=
"https://code.jquery.com/jquery-3.4.1.js">
    </script>
    <script>
        (function() {
            var timedelay = 4000;
 
            ('#sendData').on('click', function() {
                .ajax({
                    type: 'POST',
                    url: 'test.php',
                    data: {
                        "data": "checkData"
                    },
                    success: function(response) {
                        setTimeout(function() {
                            ('#ajaxOutput')
                            .append(response);
                        }, timedelay);
                    }
                });
            });
        });
    </script>
</head>
 
<body>
    <h1 style="color:green">GeeksforGeeks</h1>
    <b>Set timeout for ajax using jQuery</b>
    <div class="height"></div>
    <div>
        <button type="button" id="sendData">
          Set timeout for getting data
        </button>
        <div class="height"></div>
        <div id="ajaxOutput"></div>
    </div>
</body>
 
</html>
  • PHP文件:对于上述示例代码,使用以下PHP文件。
<?php
    if(isset(_POST['data']) &&_POST['data'] == 'checkData'){
        
         data['value1'] = 'Successfully received first data';
         data['value2'] = 'Successfully received second data';
         response = json_encode(data);
         echo $response;
    }
?>

输出:

  • 在点击按钮之前:
  • 点击按钮后:

取消超时:有时程序员需要通过使用jQuery clearTimeout()方法来取消代码中设置的定时器。

  • 代码 snippet:
var timerValue = setTimeout(timerFunction, 5000);
clearTimeout(timerValue);

jQuery是一个开源的JavaScript库,它简化了HTML/CSS文档之间的交互,它以其 “少写多做 “的理念而广为人知。
你可以通过学习这个jQuery教程和jQuery实例,从基础开始学习jQuery。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程