Vraag JQuery / Ajax-oproep met timer


Ik heb een php-pagina die rijen uit een database echoot. Ik wil het elke 30 seconden via jQuery / ajax noemen. Maar ik wil ook op elk gewenst moment de pagina kunnen bellen, zodat als ik een record toevoeg via het formulier, als het formulier wordt ingediend, ik wil dat de pagina via ajax wordt gebeld om de resultaten meteen bij te werken. Kan iemand me in de goede richting wijzen of een basiscode opgeven, zodat ik kan proberen dit uit te zoeken? Nog steeds erg nieuw voor jQuery / ajax.


41
2017-12-28 00:25


oorsprong


antwoorden:


Als u iets op een timer wilt instellen, kunt u JavaScript's gebruiken setTimeout of setInterval methoden:

setTimeout ( expression, timeout );
setInterval ( expression, interval );

Waar expression is een functie en timeout en interval zijn gehele getallen in milliseconden. setTimeout voert de timer één keer uit en voert de expression een keer terwijl setInterval de expression elke keer dat de interval passeert.

Dus in jouw geval zou het ongeveer zo werken:

setInterval(function() {
    //call $.ajax here
}, 5000); //5 seconds

Voor zover het Ajax gaat, zie jQuery's ajax() methode. Als u een interval uitvoert, is er niets dat u ervan weerhoudt hetzelfde te bellen ajax() van andere plaatsen in uw code.


Als u wilt dat een interval elke 30 seconden wordt uitgevoerd totdat een gebruiker een formulierinzending initieert ... en daarna een nieuw interval maakt, is dat ook mogelijk:

setInterval() retourneert een geheel getal dat de ID van het interval is.

var id = setInterval(function() {
    //call $.ajax here
}, 30000); // 30 seconds

Als u die ID opslaat in een variabele, kunt u bellen clearInterval(id) wat de voortgang zal stoppen.

Dan kunt u de. Opnieuw instellen setInterval() bellen nadat u uw ajax-formulierinzending hebt voltooid.


69
2017-12-28 00:30