Ajax tut nur einmal
hotti
- javascript
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='>>' 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;
###########################################################################
req.onreadystatechange = responseHandler; req.open("GET", url, true);
http://en.wikipedia.org/wiki/XMLHttpRequest#Reusing_XMLHttpRequest_Object_in_IE
Mathias
»» 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
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