interval funcion ejemplo cleartimeout jquery ajax repeat

funcion - Repetir jQuery ajax call



setinterval jquery ajax (3)

¿Cómo repetir jQuery ajax call cada 10 segundos?

$(document).ready(function() { $.ajax({ type: "GET", url: "newstitle.php", data: "user=success", success: function(msg) { $(msg).appendTo("#edix"); } });

He intentado envolver el $ .ajax con una función y llamar a la función con setInterval

$(document).ready(function() { function ajaxd() { $.ajax({ type: "GET", url: "newstitle.php", data: "user=success", success: function(msg) { $(msg).appendTo("#edix"); } }); } setInterval("ajaxd()",10000); });

Pero dice "ajaxd no está definido"


Su método no debe colocarse dentro del método listo , o solo estaría disponible allí y no afuera.

$(document).ready(function() { setInterval("ajaxd()",10000); }); function ajaxd() { $.ajax({ type: "GET", url: "newstitles.php", data: "user=success", success: function(msg){ $(msg).appendTo("#edix"); } }); }


Un mejor enfoque sería utilizar setTimeout , por lo que solo se realiza una solicitud cuando se realiza la anterior.

Como se debe hacer

Imagine que la solicitud por algún motivo (mal funcionamiento del servidor, error de red) lleva más tiempo que el tiempo definido. Tendrás muchas solicitudes simultáneas, lo cual no es bueno. ¿Y si decide acortar la diferencia horaria de 10 segundos a 1 segundo en el futuro?

$(function() { var storiesInterval = 10 * 1000; var fetchNews = function() { console.log(''Sending AJAX request...''); $.ajax({ type: "GET", url: "newstitles.php", data: { user: ''success'', some: [''other'', ''data''] } }).done(function(msg) { $(msg).appendTo("#edix"); console.log(''success''); }).fail(function() { console.log(''error''); }).always(function() { // Schedule the next request after this one completes, // even after error console.log(''Waiting '' + (storiesInterval / 1000) + '' seconds''); setTimeout(fetchNews, storiesInterval); }); } // Fetch news immediately, then every 10 seconds AFTER previous request finishes fetchNews(); });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Lo sé, después de 6 años. Pero aún así, pensé que vale la pena para otras personas.

¿Por qué el código OP no funcionó?

Vale la pena notar que su código no funcionó principalmente, porque pasó su ajaxd() como una cadena a setInterval . No es una buena práctica , en parte porque setInterval esperará que las funciones se definan globalmente . Deberías usar referencia a una función, como en mi ejemplo. De esa manera, no importa dónde esté definida su función y si es anónima o no.


$(document).ready(function() { setInterval(function() { $.ajax({ type: "GET", url: "newstitle.php", data: "user=success", success: function(msg){ $(msg).appendTo("#edix"); } }); }, 10000); });