Rainer: AJAX - IE

Hallo,

ich verzweifele langsam an folgendem Test (AJAX).
Im FF, Opera, Safari funktioniert es. IE gibt immer "Preis: 0 EUR" aus.
An andere Stelle in einem anderem Dokument habe ich genau das gleiche JS mit einer anderen Ausgabe laufen wo es in allen

genannten Browsern funktioniert. Arbeite lokal mit WinXP / xampp. Kann jemand entdecken wo der Fehler liegen könnte. JS-Console

im FF gibt nichts aus. Warum auch - da funktioniert es ja!

Gruß Rainer

test.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>

<body>
<script type="text/javascript">
var req;
function loadXMLDoc(url)
{
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}
function processReqChange()
{
if (req.readyState == 4) {
if (req.status == 200) {
document.getElementById('Preis').innerHTML = "";
document.getElementById('Preis').innerHTML = req.responseText;
} else {
alert("Kann XML-Daten nicht lesen!");
}
}
}
</script>
<table border="1" bordercolor="#000000">
<tr>
<td>
<select name="Std" id="Stunden" onChange="loadXMLDoc('xmlhttpreq.php?Stunden='+document.getElementById('Stunden').value);">
                <option selected>4</option>
                <option>5</option>
                <option>6</option>
                <option>7</option>
                <option>8</option>
                <option>9</option>
                <option>10</option>
                <option>11</option>
                <option>12</option>
              </select>
</td>
</tr>
<tr>
<td id="Preis">Preis: 200 EUR</td>
</tr>
</table>
</body>
</html>

xmlhttpreq.php

<?php
 $ergP = "Preis: ";

$StP = "50";
 $SP = ($_GET["Stunden"] * $StP);

$ergP .= "$SP EUR";

print($ergP);

exit;
?>

  1. Hi,

    ich verzweifele langsam an folgendem Test (AJAX).

    schon mal auf die Idee gekommen, dass AJAX an dem Problem zu 0% beteiligt sein könnte?

    <select name="Std" id="Stunden" onChange="loadXMLDoc('xmlhttpreq.php?Stunden='+document.getElementById('Stunden').value);">

    Wie lauten die Werte, mit denen Du hier arbeitest? (Und ganz nebenbei, warum, suchst Du hier noch umständlich ein Element, das Dir bereits direkt vorliegt?)

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      ich verzweifele langsam an folgendem Test (AJAX).

      schon mal auf die Idee gekommen, dass AJAX an dem Problem zu 0% beteiligt sein könnte?

      Nein, nicht im geringsten. Wenn ich in der xmlhttpreq.php das exit entferne und diese Datei im Browser mit ?Stunden=5 aufrufe zeigt es auch im IE "250" an. Also kann es nicht am PHP in dieser Datei liegen.
      Und wie schon geschrieben geht es ja im FF - OHNE eine Fehlermeldung der Javascriptconsole.

      <select name="Std" id="Stunden" onChange="loadXMLDoc('xmlhttpreq.php?Stunden='+document.getElementById('Stunden').value);">

      Wie lauten die Werte, mit denen Du hier arbeitest? (Und ganz nebenbei, warum, suchst Du hier noch umständlich ein Element, das Dir bereits direkt vorliegt?)

      _wo_ suche ich _was_

      -Zweifel-
      Hast du dir den Quelltext wirklich angesehen?

      Gruß Rainer

      1. Hello,

        <select name="Std" id="Stunden" onChange="loadXMLDoc('xmlhttpreq.php?Stunden='+document.getElementById('Stunden').value);">
        _wo_ suche ich _was_

        du suchst ein Element mit der ID "Stunden" anstatt mit this darauf zuzugreifen.

        Ansonsten nochmal zu deinem PHP-Skript: Kommt da denn korrektes XML zurück?

        MfG
        Rouven

        --
        -------------------
        Wenn du die Nadel im Heuhaufen nicht findest, zünde den Heuhaufen an.
        1. Hallo

          Ansonsten nochmal zu deinem PHP-Skript: Kommt da denn korrektes XML zurück?

          Nein, wozu auch. Die Antowort ist in req.responseText
                                                           ^^^^

          Gruß Rainer

      2. Hi,

        schon mal auf die Idee gekommen, dass AJAX an dem Problem zu 0% beteiligt sein könnte?
        Nein, nicht im geringsten. Wenn ich in der xmlhttpreq.php das exit entferne und diese Datei im Browser mit ?Stunden=5 aufrufe zeigt es auch im IE "250" an. Also kann es nicht am PHP in dieser Datei liegen.

        richtig. Und an AJAX auch nicht. Die triviale Schlussfolgerung ist, dass die Ressource _nicht_ mit ?Stunden=5 aufgerufen wird.

        <select name="Std" id="Stunden" onChange="loadXMLDoc('xmlhttpreq.php?Stunden='+document.getElementById('Stunden').value);">
        Wie lauten die Werte, mit denen Du hier arbeitest?

        Auf diesen, nicht als "nebenbei" markierten und folglich offenbar hauptsächlichen, Punkt gehst Du leider nicht ein.

        (Und ganz nebenbei, warum, suchst Du hier noch umständlich ein Element, das Dir bereits direkt vorliegt?)
        _wo_ suche ich _was_

        Du suchst mit aufwändigen Methoden nach exakt dem Element, in dem Du Dich bereits befindest. Das ist so, als würdest Du bei der Auskunft anrufen und fragen, wie die Telefonnummer lautet, von der Du gerade anrufst, und Dich gleich zu dieser Nummer verbinden lassen.

        Hast du dir den Quelltext wirklich angesehen?

        Hast Du Dir meine Antwort wirklich durchgelesen?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo Rainer,

    <select name="Std" id="Stunden" onChange="loadXMLDoc('xmlhttpreq.php?Stunden='+document.getElementById('Stunden').value);">

    Dein Problem liegt (wie hier schon vermutet wurde) hier ^^^:

    Da value-Angaben bei den option-Elementen nicht vorhanden sind, ist die Abfrage der text-Eigenschaft mit direkter Addressierung im aktuellen Kontext angebracht:

    <select name="Std" id="Stunden" onChange="loadXMLDoc('xmlhttpreq.php?Stunden='+this.options[this.options.selectedIndex].text);">

    Grüße,
    Thomas

    1. Hallo Thomas,

      danke für den Hinweis. _Damit_ konnte ich was anfangen. Habe nur nicht bemerkt das ich die "values" in den "options" vergessen hatte. Mit "values" geht es jetzt sauber durch.
      Die von dir gepostet Möglichkeit geht ebenso.

      Gruß Rainer