Wieder ein Problem mit Ajax
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
array
beibehalten
code
experte
falschen format
fehler
folgendes problem
funktion
hau
http
index
korrektur
problem
sinn
stehen
stunden
test
testen
tun
url
-
Also langsam verzweifle ich jetzt nun. Sorry an Trueweb, doch ich brauch wirklich Hilfe da ich mittlwerweile 15 Stunden an dem selben Script gesessen habe
Hier das Script:
<script language="Javascript"> function setRequest() { if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {} } } if (!request) { alert("Kann keine XMLHTTP-Instanz erzeugen"); return false; } else { var url = "test.php"; request.open('get', url, true); request.send(null); request.onreadystatechange = interpretRequest; } } function interpretRequest() { if (request.readyState ==4 && request.status != 200) { alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status); } else { var content = request.responseText; var tf=new Array(content); type_text(tf); } } var speed=30; var index=0; text_pos=0; var contents, row; function type_text(tl) { var tf=tl; var str_length=tl[0].length; contents=''; row=Math.max(0,index-9); while(row<index) contents += tl[row++] + '\r\n'; document.forms[0].elements[0].value = contents + tl[index].substring(0,text_pos) + "_"; if(text_pos++==str_length) { text_pos=0; index++; if(index!=tl.length) { str_length=tl[index].length; setTimeout("type_text(tl)",800); } } else setTimeout("type_text(tl)",speed); } </script> <form><textarea rows=10 cols=60></textarea></form> <script language="Javascript">setRequest();</script>
Ich bitte euch mal über dieses Script zu schauen. Ich habe nun folgendes Problem.
Es wird nix geschrieben bzw. das _ wird als einziges geschrieben.
Hat jmd. ne Idee???? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also ich hab mir mal die mühe gemacht den code durchzusehen & zu testen.
Hier ist meine (vielleicht ein bischen unsaubere) lösung deines problems:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Unbenannt</title> </head> <body> <script language="Javascript"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Unbenannt</title> </head> <body> <script language="Javascript"> function setRequest() { if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {} } } if (!request) { alert("Kann keine XMLHTTP-Instanz erzeugen"); return false; } else { var url = "http://dikay.lima-city.de/ajax/test.php"; request.open('get', url, true); request.send(null); request.onreadystatechange = interpretRequest; } } function interpretRequest() { if (request.readyState ==4 && request.status != 200) { alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status); } else { var content = request.responseText; tl[0]=content; type_text(tl); } } tl=new Array('blablup') var speed=30; var index=0; text_pos=0; var contents, row; function type_text(tl) { //var tf=tl; var str_length=tl[0].length; contents=''; row=Math.max(0,index-9); while(row<index) contents += tl[row++] + '\r\n'; document.forms[0].elements[0].value = contents + tl[index].substring(0,text_pos) + "_"; if(text_pos++==str_length) { text_pos=0; index++; if(index!=tl.length) { str_length=tl[index].length; setTimeout("type_text(tl)",800); } } else setTimeout("type_text(tl)",speed); } </script> <form><textarea rows=10 cols=60></textarea></form> <script language="Javascript">setRequest();</script> </body> </html>
Guck mal was ich mit den Arrays tf und tl gemacht habe.
Die url musst du eventuell wieder ändern. (url=test.php)
tf=tl hat ja wohl nie einen sinn gehabt oder? -
was für "fehler " hast du denn behoben?
edit: ajah hab ich mir ja schon gedacht
Hab mal auf deine Seite geguckt ([url]]http://dikay.lima-city.de/ajax//[/url])
Also bitte diesen "Fehler" beibehalten:
tl=new array();
statt
var tl=new array();
Warum?
Du solltest wissen das nicht automatisch alle variablen die Außerhalb einer Funktion deklariert wurden auch innerhalb der Funktion zur Verfügung stehen.
ohne var tun sie das aber.
Beschäftige Dich mal mal mit den speziellen Eigenschaften von Funktionen
Soviel zu meinen Fehlern
P.s. kopier den Code doch mal 1 zu 1 ohne "Korrekturen", falls das nicht läuft sag mir mal mit welchen Browser(n) du testest.
Beitrag zuletzt geändert: 21.2.2009 20:19:51 von simuliertes -
Hmm also jetzt hackt es bei mir wirklich ich habe es 1 zu 1 eins übernommen und habe dennoch nur einen _ da stehen (Pls editier mal dein Script ist oben 2mal der Anfang der Seite drinne)
Habe Firefox 3.0.6 -.-
EDIT:
Mit Internet Explorer funktioniert das.. wieso das??
Hmm nocheinmal editieren:
Also mit IExplorer funktioniert dein Script genau 1mal danach geht nix mehr.
Beitrag zuletzt geändert: 23.2.2009 15:13:02 von dikay -
mmmhh okeyy
also der Lauftext ist jedenfalls nicht das Problem wie man hier sieht:
tl=new Array(); var speed=30; var index=0; text_pos=0; var contents, row; function type_text(tl) { var str_length=tl[0].length; contents=''; row=Math.max(0,index-9); while(row<index) contents += tl[row++] + '\r\n'; document.forms[0].elements[0].value = contents + tl[index].substring(0,text_pos) + "_"; if(text_pos++==str_length) { text_pos=0; index++; if(index!=tl.length) { str_length=tl[index].length; setTimeout("type_text(tl)",800); } } else setTimeout("type_text(tl)",speed); } </script> <form><textarea rows="10" cols="60"></textarea></form> <script language="Javascript">tl=['hallo du'];type_text(tl);;</script>
also muss es am ajax hapern.
Hau mal ein alert(content) da rein um zu überprüfen ob ff da was bekommt...
} else { var content = request.responseText; alert(content); tl[0]=content;
ich vermute grad mal das es am falschen Format deiner test.php liegt & ff da ein bisschen intoleranter ist als ie
für alle ajax-experten:
http://dikay.lima-city.de/ajax/test.php
kann man das so machen? -
Ich bedanke mich an allen die sich daran gesessen haben, ich habe es nun raus... mein Finaler CODE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Dialogbot!</title> </head> <body> <script language="Javascript"> function setRequest() { if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {} } } if (!request) { alert("Kann keine XMLHTTP-Instanz erzeugen"); return false; } else { var url = "http://dikay.lima-city.de/ajax/bot.php"; request.open('get', url, true); request.send(null); request.onreadystatechange = interpretRequest; } } function interpretRequest() { if(request.readyState ==4){if ( request.status == 200) { var content = request.responseText; tl[0]=content; type_text(tl); } else { alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status); }} } tl=new Array('blablup'); var speed=30; var index=0; text_pos=0; var contents, row; function type_text(tl) { //var tf=tl; var str_length=tl[0].length; contents=''; row=Math.max(0,index-9); while(row<index) contents += tl[row++] + '\r\n'; document.forms[0].elements[0].value = contents + tl[index].substring(0,text_pos) + "_"; if(text_pos++==str_length) { text_pos=0; index++; if(index!=tl.length) { str_length=tl[index].length; setTimeout("type_text(tl)",800); } } else setTimeout("type_text(tl)",speed); } </script> <form><textarea rows=10 cols=60></textarea></form> <script language="Javascript">setRequest();</script> </body> </html>
Beitrag zuletzt geändert: 23.2.2009 16:12:21 von dikay -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage