hotti: Ajax tut nur einmal

hi,

mein Ajax-Objekt "req" wird beim Laden der Datei erstellt, Code s.u. Problem: Mit dem IE funktioniert das alles nur einmal nach dem Neuladen der Seite. Erstelle ich das Ajax-Objekt für den Request jedoch immer wieder neu in der Funktion rechne(url), tuts auch im IE wie in Mozilla, FF.

Was mache ich falsch?

Hotte

Sorry für den vielen Code

  
#!/usr/bin/perl  
  
###########################################################################  
use strict;  
use CGI 'param';  
  
print "Content-type: text/html\n\n";  
  
if(param()){  
	if(my $eingabe = param('eingabe')){  
		print 3*$eingabe;  
	}  
	else{  
		print "###################";  
	}  
}  
else{  
	print qq(  
		<HTML lang="de">  
		<HEAD>  
		<LINK REL="stylesheet" HREF="/nv.css" TYPE="text/css">  
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
		<TITLE>Testseite</TITLE>  
  
		<script type="text/javascript">  
			// Erstelle ein Objekt für Ajax-Requests  
			var req = mob();  
			function mob(){  
				var mob = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");  
				return mob;  
			}  
  
		</script>  
  
		</HEAD>  
  
		<BODY onload="mob();">  
  
		<h1>Testseite</h1>  
  
		<form action="$ENV{SCRIPT_NAME}">  
  
  
		<fieldset style="float:left; padding:10px">  
			<legend><b>Eingabe:</b></legend>  
				<input size=30 name="eingabe" id="eingabe" title="Eingabe" value="0">  
				<input type='button' value='&gt;&gt;' title='Berechne' onClick="rechne('$ENV{SCRIPT_NAME}?eingabe='+document.getElementById('eingabe').value);">  
		</fieldset>  
  
		<fieldset style="float:left; padding:10px">  
			<legend><b>Ausgabe:</b></legend>  
			<input size=30 name="ausgabe" id="ausgabe" title="Ergebnis" value="0">  
		</fieldset>  
  
		</form>  
  
		<p class="cleft">Die Eingabe wird mit 3 multipliziert...</p>  
  
		<script type="text/javascript">  
			function rechne(url){  
				req.onreadystatechange = responseHandler;  
				req.open("GET", url, true);  
				req.send(null);  
			}  
  
			function responseHandler(){  
				if ( req.readyState == 4){  
					if(req.status == 200){  
						document.getElementById('ausgabe').value = req.responseText;  
					}  
					else{  
						document.getElementById('ausgabe').value = 'Problem mit Ajax';  
					}  
				}  
			}  
		</script>  
  
		</body>  
		</html>  
	);  
  
}  
  
  
exit;  
###########################################################################  
  

  1.   		req.onreadystatechange = responseHandler;  
      		req.open("GET", url, true);  
    

    http://en.wikipedia.org/wiki/XMLHttpRequest#Reusing_XMLHttpRequest_Object_in_IE

    Mathias

    1. »» req.onreadystatechange = responseHandler;
      »» req.open("GET", url, true);

      http://en.wikipedia.org/wiki/XMLHttpRequest#Reusing_XMLHttpRequest_Object_in_IE

      Ah, Probleme mit "Reusing XMLHttpRequest Object in IE". Ich werd mir das mal durchlesen in der Hoffnung, eine Lösung zu finden, danke.

      Hotte

      --
      Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    2. hi,

      »» req.onreadystatechange = responseHandler;
      »» req.open("GET", url, true);

      http://en.wikipedia.org/wiki/XMLHttpRequest#Reusing_XMLHttpRequest_Object_in_IE

      To be able to reuse the XHR object properly, use the open method first and set onreadystatechange later.<

      Kurz und schmerzlos:

      req.open("GET", url, true);               // first
      req.onreadystatechange = responseHandler; // later

      und es tut, danke nochmal :-)

      Hotte

      --
      Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.