Permalänk
Musikälskare

Ladda om enbart en DIV? Ajax?

Hallå!

Jag har en DIV med en lista <li class="test">

Jag vill att li.test ska laddas om varje timme, kan man göra det i JS eller Ajax? Letat runt men hittar bara "reloads" med header-redirect

EDIT:

Provat detta men de blir ingen reload :/

<script>
var refreshId = setInterval(function()
{
$('li.test'));
}, 1000);
</script>

Visa signatur

❀ Monitor: ASUS Swift 27" @ 1440p/165Hz ❀ CPU: Ryzen 7700X ❀ Cooling: Corsair H170i ELITE 420mm ❀ GPU: MSI 3080 Ti SUPRIM X ❀ Memory: Corsair 32GB DDR5 Vengeance ❀ Motherboard: ASUS Crosshair X670E Hero ❀ M.2: Samsung 980 Pro ❀ PSU: Corsair HX1200 ❀ Chassi: Corsair 7000X ❀ Time Spy: 19 340

📷 Mina fotografier
🎧 Vad lyssnar du på just nu?

Permalänk
Medlem

du är på helt rätt spår.
dock är koden du postade inte riktigt rätt/komplett.

<script type="text/javascript"> var intervalId; // här sparar vi intervalIdt, så att man kan avbryta det hela med clearInterval(intervalId); $(document).ready(function(){ // kör när dokumentet är färdig-laddat (så vi "vet" att elementen finns) intervalId = setInterval(function(){ $('li.test').load('dinAjaxRequest.php'); }, 1000); // tid i millisekunder, dvs 1000 = 1 sekund }); </script>

.load()
setInterval()

Skrivet av flashen:

Hallå!

Jag har en DIV med en lista <li class="test">

Jag vill att li.test ska laddas om varje timme, kan man göra det i JS eller Ajax? Letat runt men hittar bara "reloads" med header-redirect

EDIT:

Provat detta men de blir ingen reload :/

<script>
var refreshId = setInterval(function()
{
$('li.test'));
}, 1000);
</script>

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Musikälskare
Skrivet av jovnas:

du är på helt rätt spår.
dock är koden du postade inte riktigt rätt/komplett.

<script type="text/javascript"> var intervalId; // här sparar vi intervalIdt, så att man kan avbryta det hela med clearInterval(intervalId); $(document).ready(function(){ // kör när dokumentet är färdig-laddat (så vi "vet" att elementen finns) intervalId = setInterval(function(){ $('li.test').load('dinAjaxRequest.php'); }, 1000); // tid i millisekunder, dvs 1000 = 1 sekund }); </script>

.load()
setInterval()

Tack för svaret!

Så "dinAjaxRequest.php" ska innehålla koden jag vill ska laddas om i li.test? Måste det vara ajax? Har noll kolla på det

Ska prova!

EDIT: Tack fungerar

En snabb fråga till, kan man köra detta mot serverklockan? Som det är nu uppdateras det väll när man laddar sidan, vill ha det lite mer exakt så man kan sätta 30min mot klockan oberoende på när man laddar sidan

Visa signatur

❀ Monitor: ASUS Swift 27" @ 1440p/165Hz ❀ CPU: Ryzen 7700X ❀ Cooling: Corsair H170i ELITE 420mm ❀ GPU: MSI 3080 Ti SUPRIM X ❀ Memory: Corsair 32GB DDR5 Vengeance ❀ Motherboard: ASUS Crosshair X670E Hero ❀ M.2: Samsung 980 Pro ❀ PSU: Corsair HX1200 ❀ Chassi: Corsair 7000X ❀ Time Spy: 19 340

📷 Mina fotografier
🎧 Vad lyssnar du på just nu?

Permalänk
Medlem
Skrivet av flashen:

En snabb fråga till, kan man köra detta mot serverklockan? Som det är nu uppdateras det väll när man laddar sidan, vill ha det lite mer exakt så man kan sätta 30min mot klockan oberoende på när man laddar sidan

Fattar inte riktigt vad du menar men den där koden kör AJAX-requesten en gång varje sekund(1000 millisekunders delay) och den startar så fort sidan laddats oavsett när du laddar sidan.

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com

Permalänk
Medlem

det beror lite på hur man definierar ajax. det som händer är ju att den gör en request mot servern för att fylla din tag med "ny" information. det behöver ju inte vara en php-sida utan kan lika gärna vara en statisk html-sida, fast då är det ju ingen större mening att ladda om det med jämna mellanrum.

under förutsättning att du använder dig av någon form av serverside script (php, asp osv), så kan man ju alltid skicka med den aktuella tiden på servern till browsern i exempelvis ett dynamiskt genererat javascript eller i en javascript-variabel.

nedan följer ett exempel där setTimeout kör en funktion efter 123456ms. då laddas informationen från servern och sedan sätts det upp en omladdning var 30:e minut med setInterval.

var timeoutId; var intervalId; function doIt(){ $('li.test').load('nyData.html'); } $(document).ready(function(){ timeoutId = setTimeout(function(){ doIt(); intervalId = setInterval(function(){ doIt(); }, 1800000); }, 123456); // delay beräknad på servern för att trigga funktionen vid lämplig tidpunkt });

hur du beräknar vilken delay du ska sätta på din timeout överlämnar jag till dig.

Skrivet av flashen:

Tack för svaret!

Så "dinAjaxRequest.php" ska innehålla koden jag vill ska laddas om i li.test? Måste det vara ajax? Har noll kolla på det

Ska prova!

EDIT: Tack fungerar

En snabb fråga till, kan man köra detta mot serverklockan? Som det är nu uppdateras det väll när man laddar sidan, vill ha det lite mer exakt så man kan sätta 30min mot klockan oberoende på när man laddar sidan

Visa signatur

as far as we can tell, the massacre went well...