Gå til innhold

Noob i Javascript - kan du hjelpe?


Anbefalte innlegg

$(function(Explore) {
   var myInterval = function() {
        
        $.ajax({
            type: "GET",
            url: "./corridor/travel/exploration.php",
            success: function(html) {
                 // html is a string of all output of the server script.
                $("#load_updates").html(html);
                
           }

        });
    }
    myInterval();
    
    var timer = setInterval(function() { 
    myInterval(); // every next run should be done with delay
}, 6000);
})
;

Denne koden sjekker exploration.php rundtregnet hvert fjerde sekund, for en real-time opplevelse i forhold til tilfeldige eventer i nevnte .PHP-fil.

Spørsmålet mitt kommer deretter; hvordan kan jeg få Setinterval til å AVSLUTTE etter at exploration.php aktiverer en valgt nøkkel, f.eks "$_GET['ferdig']? Altså, at når den randomiserte eventen som setinterval sjekker i exploration.php plutselig gir ut en $_GET['ferdig'], så gjøre en clearInterval(myInterval)?

Jeg velger å forstå det slik at ajax-scriptet må BE om denne nøkkelen og deretter altså se etter den, men hvordan i forhold til dette skriptet?

Endret av Debutanten
Lenke til kommentar
Videoannonse
Annonse

Det går ikke an å returnere noe med $_GET, men et alternativ er jo å la exploration.php returnere en spesifikk status kode, også fange det opp med:

php:

http_response_code(205)

jquery:

$.ajax({
  type: "GET",
  url: "./corridor/travel/exploration.php",
  success: function(html) {
    // html is a string of all output of the server script.
    $("#load_updates").html(html);
  },
  statusCode: {
    205: function() {
      // stop loading updates
    }
  }
});

 

Men jeg har ikke veldig mye erfaring med jQuery, så det kan være dette er langt mer komplisert enn det trenger å være.

Lenke til kommentar

Tusen takk for input! Jeg prøver denne koden, men jeg får ikke noe resultat - jquery-koden vil ikke fungere. Kanskje jeg overser noe banalt åpenbart, men her er iallefall den komplette koden jeg forsøker:

$(function(Explore) {
   var myInterval = function() {
		
        $.ajax({
            type: "GET",
            url: "./corridor/travel/exploration.php",
            success: function(html) {
                 // html is a string of all output of the server script.
                $("#load_updates").html(html);
				
           },
		   statusCode: {
    205: function() {
      // stop loading updates
    }
  }

        });
    }
	myInterval();
	
	var timer = setInterval(function() { 
    myInterval(); // every next run should be done with delay
}, 6000);
})
;

 

Lenke til kommentar

Kommentaren "stop loading updates" var bare en placeholder, det var meningen at du skulle fylle inn den delen av koden som stopper interval, jeg demonstrerte bare en måte der du kunne sende et signal fra php-fila tilbake til dette ajax-kallet ;) 

statusCode: {
  205: function() {
    // stop loading updates
    clearInterval(timer);
  }
}

 

Lenke til kommentar

Hahaha, jeg gjorde nå den endringen! Overså det totalt! Har kodet i så mange timer nå at jeg knapt vet hvor jeg er.

Så, noen observasjoner:

Jeg får ikke Jquery-skriptet til å funke lenger med denne endringen. Jeg lurer på om jeg plasserer noe feil eller om jeg overser en eller flere {}.

Jeg får ikke brukt 

http_response_code(205)

med suksess, ettersom siden blir blank (ser ut til å terminere alt som skal skje).

Formålet med alt dette her, er å drepe setinterval det sekundet .php sender ut "signalet" om det.

Endret av Debutanten
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...