¿Cómo configurar el tiempo de espera para ajax usando jQuery?

En la programación web, se utiliza el Ajax para que los datos resultantes se muestren en una parte de la página web, sin recargar la página. El usuario necesita realizar la solicitud de Ajax y quiere el resultado dentro de un período de tiempo. En este escenario, la característica de tiempo de espera de jquery se usa en el código. El tiempo de espera de la sesión ha sido una característica muy común en las aplicaciones web basadas en Ajax.
En la interfaz receptiva, el programador necesita retrasar la solicitud de ajax para lograr alguna tarea antes de la respuesta. Esto se puede lograr usando la función jQuery setTimeout() . Esta función ejecuta el código Ajax dado después de una cierta cantidad de tiempo.
Sintaxis: 
 

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

Parámetros: 

  • page_url: este parámetro se utiliza para enviar o recuperar datos.
  • opciones: este parámetro se utiliza para contener los otros ajustes de configuración necesarios para la solicitud ajax.

El siguiente ejemplo ilustra el enfoque:
Ejemplo 1: 

  • Fragmento de código: 
     
$.ajax({
    url: "test.php",
    error: function(){
        //Error code
    },
    success: function(){
        //Success code
    }
   timeout: 5000 // sets timeout to 5 seconds
});
  • La función de éxito se ejecuta si la solicitud tiene éxito. O, a veces, si ocurre un error, es mejor responder rápidamente que esperar más tiempo. Esto se maneja en la función de error . El siguiente programa explica la implementación de la opción de tiempo de espera en la parte del código ajax. El tiempo de espera es el número que especifica el tiempo en milisegundos para que se maneje la solicitud.

Programa: 
 

  • Archivo HTML: 
     

html

<!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>
  • Archivo PHP: El siguiente archivo PHP se usa en el ejemplo anterior. 
     

php

<?php
        
    if($_GET["dataquery"]=='true')
    {
        sleep(7);
    }
      
    echo "Welcome to GeeksForGeeks";
?>

Producción : 
 

  • Antes de hacer clic en el botón:
  • Después de hacer clic en el botón:

Ejemplo 2: setTimeout () es una función jQuery que ejecuta un fragmento de código después de retrasar un límite de tiempo específico. Por ejemplo, retrasar una ventana emergente por un límite de tiempo específico, para un usuario que visita algún sitio web. Este método acepta un puntero a una función como su primer parámetro. En este ejemplo, retrasa el código Ajax durante 4 segundos usando el método setTimeout() .
Fragmento de código : 
 

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

Programa: 

  • Archivo HTML:

html

<!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>
  •  
  • Archivo PHP: para el código de ejemplo anterior, use el siguiente archivo 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;
    }
?>

Producción: 

  • Antes de hacer clic en el botón:
  • Después de hacer clic en el botón:

Cancele el tiempo de espera: a veces, el programador necesita cancelar el temporizador establecido en el código utilizando el método jQuery clearTimeout()

  • Fragmento de código: 
var timerValue = setTimeout(timerFunction, 5000);
clearTimeout(timerValue);

jQuery es una biblioteca JavaScript de código abierto que simplifica las interacciones entre un documento HTML/CSS. Es muy famosa por su filosofía de «Escribir menos, hacer más»
Puede aprender jQuery desde cero siguiendo este tutorial de jQuery y ejemplos de jQuery .

Publicación traducida automáticamente

Artículo escrito por geetanjali16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *