meine erste Ajax.load abfrage (Anfänger)

amigo89

New member
Hallo zusammen,

da ich momentan am lernen von Ajax, jQuery und JS allgemein bin, habe ich mir heute ein mini-script geschrieben, dass per knopf 1 eine .php datei laden soll und per knopf 2 die ausgabe wieder löschen sollen.

Funktioniert an sich auch gut. Allerdings habe ich 2 Fragen, die wie ich denke irgendwie zusammenhängen:

1. Wenn ich auf "lösch mich" drücke, nachdem ich zuvor auf "lade mich" geklickt habe, verschwindet die Ausgabe, soweit so gut. Drücke ich allerdings zuvor 2x Mal auf "lade mich", verschwindet die Ausgabe nur ganz kurz und läd dann wieder, sprich iwie werden die Intervalle nicht resetet. Es sieht wohl so aus, dass wenn ich zwei mal drücke, dass mehrere Intervalle erzeugt werden, das kann ich zumindest in der Netzwerkanalayse im Browser sehen. Wieso? Die Variable müsste doch eig. jedesmal überschrieben werden.

2. Eine an sich kleine Frage, wieso kann ich über die Konsole nicht die Variablen wie "interval" abfragen, aber im Script mit console.log schon?


Hier der Code:

HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="ajaxtest.js"></script>
</head>
<body>

<h1>Meine erste Ajax.load abfrage</h1>

<input id="ajaxbtn" type="button" value="lade mich">
<input id="ajaxdel" type="button" value="lösch mich"> <p>
<div id="testdiv" style="font-size:20px;width:400px;height:200px;border:3px solid red;padding-left:5px;"></div>

</body>
</html>

ajaxtest.js

HTML:
$(document).ready(function(){
	
	var interval;
	
	$("#ajaxbtn").click(function(){
		$("#testdiv").load( "test.php");
		
		interval = setInterval(function() {
		$("#testdiv").load( "test.php");}, 1000);
		
		console.log(interval);
		
		
		
	});
	
	$("#ajaxdel").click(function(){
		
		$("#testdiv").empty();
		
		clearInterval(interval);
		
	});
	
});


test.php

PHP:
<?php

$time = date("H:i:s");
$i = 20;
$y = "Das ist ein String";
$str = "Dies ist eine Variablen Ausgabe!";
$str .= "<br>";
$str .= "Variable i = ";
$str .= $i;
$str .= "<br>";
$str .= "Variable y = ";
$str .= $y;
$str .= "<br>";
$str .= "Uhrzeit: ";
$str .= $time;


echo $str;
?>

Danke für eure Hilfe!

André
 
Wenn Du zum zweiten Mal auf "Lademich" drückst, wird ein zweiter Timer gestartet, ohne dass der erste gelöscht wird. Die Variable interval wird mit den Daten des zweiten Timers überschrieben, obwohl der erste weiterläuft. Wenn Du dann auf "Löschmich" drückst, wird nur der zweite Timer gelöscht und der erste läuft weiter.
Wofür brauchst Du denn überhaupt den Timer? Ich vermute, die Variablen, die ausgegeben werden ändern sich von Load zu Load, die Uhrzeit sowieso. Du kannst das Problem lösen, indem Du die Variable interval beim "Lademich" abfragst:
Code:
$(document).ready(function(){
	
	var interval;
	
	$("#ajaxbtn").click(function(){
		$("#testdiv").load( "test.php");
	
                if (!interval) {	
		    interval = setInterval(function() {
		    $("#testdiv").load( "test.php");}, 1000);
                }
		
		console.log(interval);
        });
	
	$("#ajaxdel").click(function(){
		
		$("#testdiv").empty();
		
		clearInterval(interval);
                interval = null;
		
	});
	
});
 
Zurück
Oben