Ajax und Probleme mit IE

C

Chrischnian

Hallo Leute! :p

Möglich soll folgendes sein!
4 Select Boxen, eine wird von PHP beim öffnen der Seite geladen.
Die 2 wird beim auswählen des Kunden der in der ersten erscheint geladen danach wählt man ein Projekt aus der 2 aus und die dritte sowie die 4 wird jeweils neu generiert!

Das alles Funktioniert im FireFox aber leider streikt der Internet Explorer!

Wer kann mir dabei helfen das JS bzw die Rückgabe in die Seite zu verbessern das Sie sowohl im FF als auch im IE funktioniert.

Hier mein JS
Code:
function sendRequest(choice) {
        try {
                req = window.XMLHttpRequest?new XMLHttpRequest():
                new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
                //Kein AJAX Support
        }

        if(choice == "projekt") {
                req.onreadystatechange = handleResponse;
                req.open("GET", 'includes/function/ajax/projekte.php?s='+ document.getElementById('Kunden').value);
        } else if(choice == "bauteil") {
                req.onreadystatechange = handleResponse;
                req.open("GET", 'includes/function/ajax/bauteile.php?s='+ document.getElementById('projekt').value);
        }

        req.send(null);
}

function handleResponse() {
        if ((req.readyState == 4) && (req.status == 200)) {
                var update = new Array();
                var teilen = new Array();
                var response = req.responseText;
                if(response.indexOf('||' != -1)) {
                        teilen = response.split('++');
                        update = teilen[0].split('||');
                        document.getElementById(update[0]).innerHTML = update[1];
                        update2 = teilen[1].split('||');
                        document.getElementById(update2[0]).innerHTML = update2[1];
                }
        }
}

Hier der Formular teil von wo gesendet und wieder empfangen wird
HTML:
<form method="post" action="includes/function/functionuser/taetigkeit/inserttaetigkeit.php" name="Eingabeformular"><table border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td>Kunde:</td>
            <td><select name="hersteller" id="Kunden" onChange="sendRequest('projekt')" size="1">
            <option value="">Bitte ausw&auml;hlen</option>';
<?php
$sql = 'SELECT * FROM kunde where kunde_status = "1"';
$ergebnis = mysql_query($sql);
while($data = mysql_fetch_array($ergebnis)){
?>
            <option value="<?php echo $data["kunde_id"]; ?>"
            <?php if ($data["kunde_id"] == $kunde) {?> selected <?php } ?>><?php echo $data["kunde_nr"]; ?>&nbsp;-&nbsp;<?php echo $data["kunde_name"]; ?></option>
<?php } ?>
                    </select></td>
        </tr>
        <tr>
            <td>Projekt:</td>
            <td><select name="projekt" id="projekt" onChange="sendRequest('bauteil')" size="1"></select></td>
        </tr>
        <tr>
            <td>Bauteil:</td>
            <td><select name="bauteil" id="bauteil" size="1"></select></td>
        </tr>
        <tr>
            <td>Art der Tätigkeit:</td>
            <td><select name="art" id="art" size="1"></select></td>
        </tr>
        <tr>
            <td>Kommentar:</td>
            <td><textarea id="MyTextarea" name="MyTextarea">This is <b>the</b> initial value.</textarea></td>
        </tr>
        <tr><td>&nbsp;</td></tr>
        <tr>

Und einer der Dateien die neu geladen wird:
PHP:
<?php
include_once("../../../config/configdaten.php");
include_once("../../checkuser.php");
$uebergabe = 'bauteil||';
$uebergabe .= '<option value="">Bitte ausw&auml;hlen</option>';
$result = mysql_query('SELECT * FROM bauteil WHERE bauteil_projektid = "'.$_GET['s'].'" AND bauteil_status = "1";');
while($row = mysql_fetch_object($result))
{
    $uebergabe .= '<option value="'.$row->bauteil_id.'">'.$row->bauteil_bezeichnung.'</option>';
}

$uebergabe .= '++art||';
$uebergabe .= '<option value="">Bitte ausw&auml;hlen</option>';
$result = mysql_query('SELECT * FROM preiskategorien WHERE preiskategorien_projektid = "'.$_GET['s'].'"');
while($row = mysql_fetch_object($result))
{
    $uebergabe .= '<option value="'.$row->preiskategorien_id.'">'.$row->preiskategorien_bezeichnung.'</option>';
}

echo trim($uebergabe, " ");
?>

Wäre super wenn ich Tipps bekommen würde!
 
Hast du schon mal geprüft, ob das Request-Objekt überhaupt erstellt wird?

Baue mal an den Schlüsselstellen der Funktionen alerts ein, um erst mal zu sehen, an welcher Stelle der IE hängen bleibt...so auf den ersten und 2. Blick lässt sich da nichts erkennen.
 
Das Problem ist das er nicht hängen bleibt sondern die generiertne <options> aus den php Dateien nicht in die <select> einfügt!

Laut Microsoft was ich gerade gefunden habe http://support.microsoft.com/default.aspx?scid=kb;de-de;276228 kann der IE select boxen nichts mehr zuweisen.

Ich habe schon ein wenig probiert und kann folgendes sagen wenn ich vor den <select's> ein <div> und wähle den Kunden aus dann verschwindet die <select> und der Text erschein was in die <select> soll.

Ich bin kein JS Profi ich bräuchte jemanden oder wenigstens die Hilfe um den Rückgabe wert in die select zu bringen! Der Rest geht.

Wer will kann das Script mal LIVE sehen bitte per PM melden dann kann ich einen Zugang machem. Da die Seite mit Passwort zu ist.

Aber erst mal danke für die Hilfe

Gruss

Christian
 
Ahso...das grenzt die Sache ja schonmal stark ein :)

Anstatt die options per innerHTML in die Liste einzufügen, erzeuge die ganzen Listen neu...also incl. <select>....und ersetze die vorhandenen damit.

Der andere..."korrektere" Weg wäre, die options über das gleichnamige JS-Objekt zu erzeugen, und in die vorhandenen Listen einzuhängen...das geht auch im IE.
 
Du meinst ich soll einen Div vor den jeweiligen select setzen und dann in den 2 php die komplette select inkl options erzeugen und diese einfügen?

Werde ich mal probieren!

Melde mich dann wieder!
 
Jo..so dachte ich. <div>'s brauchst du garnicht extra nehmen...du kannst es auch direkt in die Tabellenzellen einfügen, da stehen ja jeweils nur die <select> drinnen, soweit ich sehe.
 
Zurück