AJAX, Endlosformular.

R

Ramix

Guten Abend,

Wir hatten 3 Wochen Webentwicklungsmodul und ich bin voll in PHP und AJAX versunken. Jetzt habe ich eine Bildergalerie, und das passende Forumlar für Uploads. Jedoch kann ich nur einzelne Dateien hochladen. Sprich ein input type = "file". Jetzt wollte ich mit AJAX ein neuer input type einblenden, wenn der obrige ausgefüllt wird.
Leider scheitere ich an der Übergabe bei der onreadystatechange-Funktion. Hier mal die Dateien:

Das Formular:
PHP:
<?php
class hallo{
	public function __construct(){
		?>
			<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
			<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
				<head>
					<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
					<title>Hallo</title>		
					<script type="text/javascript" src="js/ajax2.js"></script>
					<script type="text/javascript">
						function echo(){
							alert ("Hallo");
						}
					</script>
					
				</head>
				<body>
					<form name="form" id="form">
						<input type="text" name="1" onkeyup="ajax('echo.php',1)"/>
						<div id="hallo1"></div>
					</form>
				</body>
				</html>
		<?php
	}
}
$hallo = new hallo();
?>
Das Sever-Script:
PHP:
<?php
$hallo =  $_GET['nummer'];
$hallo++;
echo '<input type="text" name="'.$hallo.'" />';
echo '<div id="hallo'.$hallo.'"></div>';
?>
Und natürlich AJAX....! =)
Code:
var http_request = false;

function makehttp_request(){
    http_request = false;
        if(window.XMLHttpRequest){ //übliche Browser
            http_request = new XMLHttpRequest();
            return http_request;
                }
        else if (window.ActiveXObject) { //IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                    return http_request;
                }
                catch (e) {
                    try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    return http_request;
                    }
                    catch (e){}
                }
            }
            if (!http_request){
                alert('Ihr Bowser unterst&uuml; kein AJAX');
            }
}

function ajax(url,nr){
        http_request = makehttp_request();
        url = url+"?nummer="+nr;
        http_request.onreadystatechange = content(nr);
        http_request.open('GET', url, true);
        http_request.send(null);
}
function content(nr){
    if (http_request.readyState == 4){      //wenn dateiten empfangen 
        if (http_request.status == 200){    //wenn vollständig breit!
          document.getElementById('hallo'+nr).innerHTML = http_request.responseText;
        } 
        else {
          alert('Fehler beim Laden!');
        }
    }
}

Der Inhalt des Request stimmt...leider funktioniert das innerHTML nicht....
Vielen Dank für eure Antwort(en)!

Gruss Ramon
 
Schreibs mal so:
Code:
http_request.onreadystatechange = function(){content(nr);}

Damit überwachst du den onreadystatechange-Event und rufst beim Eintreten die Funktion auf.
So, wie du es bisher hast, wird zwar der Event überwacht, die Funktion aber sofort aufgerufen, wenn sie vom Browser gelesen wird, und nicht erst, wenn der Event eintritt.
 
Danke! :)

Hat super funktioniert!

Dank schön nocheinmal, hat wieder einmal viel geholfen! ^^
Gruss Ramon
 

Neue Beiträge

Zurück