burakko: Ajax Request funktioniert nicht

Sers Leute,
ich habe folgendes Problem:

Ich starte ein Ajax Request das wiederum per PHP Daten aus einer DB holt. Der Ajax Request funktioniert wenn er mit <body onload"..."> gestartet wird. Allerdings ändert sich das wenn der Ajax R. per onClick gestartet wird.

Es erscheint dann folgender Fehler: Notice: Undefined index: Juni in D:...

Hier das Ajax Skript.

  
function zeit()  
{  
  
var jahr = document.getElementById('filterJ').innerHTML;  
var monat = document.getElementById('filterM').innerHTML;  
  
  
  
ajax(); //Erzeugt ein Ajax Objekt.  
xmlhttp.onreadystatechange=function()  
  {  
  if (xmlhttp.readyState==4 && xmlhttp.status==200)  
    {  
	document.getElementById("eintrag").innerHTML = xmlhttp.responseText;  
    }  
  }  
xmlhttp.open("GET","zeitkonto.php?jahr="+jahr+"&monat="+monat,true);  
xmlhttp.send();  
}  

Hier das PHP Skript:

  
session_start();  
error_reporting(E_ALL);  
include 'isset.php';  
include 'conn.php';  
  
$jahr = mysql_real_escape_string($_GET['jahr']);  
$monat = mysql_real_escape_string($_GET['monat']);  
  
  
$monate = array("Januar"=>"01",  
				"Februar"=>"02",  
				"März"=>"03",  
				"April"=>"04",  
				"Mai"=>"05",  
				"Juni"=>"06",  
				"Juli"=>"07",  
				"August"=>"08",  
				"September"=>"09",  
				"Oktober"=>"10",  
				"November"=>"11",  
				"Dezember"=>"12");  
  
  
$datum = date("Y-m-d",strtotime("01-".$monate[$monat]."-".$jahr));  

ab hier ist es irrelevant.

Und hier der betreffende HTML Code:

  
...<body onLoad="zeit()">... <!-- Code dazwischen kann vernachlässigt werden.-->  
  
        	<!-- Navi: Zeitkonto -->  
        	<div id="zeitkontoHeader">Zeitkonto</div>  
            <a href="javascript:yearIn()"><div id="filterJ" class="zeitNavi"><?php echo date("Y",time()); ?></div></a>  
            <a href="javascript:monthIn()"><div id="filterM" class="zeitNavi"><?php include 'getmonth.php' ?></div></a>  
            <a href="javascript:zeit()"><div id="zz" class="zeitNavi">Eintragen</div></a>  
        	<div id="soll">Soll 120h</div>  
            <div id="ist"></div>  
  
  
            <div id="month">  
				<ul>  
                	<li onClick="fillM(this), zeit()" onMouseOver="over(this)" onMouseOut="out(this)">Januar</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">Februar</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">M&auml;rz</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">April</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">Mai</li>  
                    <li onClick="fillM(this), zeit()" onMouseOver="over(this)" onMouseOut="out(this)">Juni</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">Juli</li>  
                    <li onClick="fillM(this), zeit()" onMouseOver="over(this)" onMouseOut="out(this)">August</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">September</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">Oktober</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">November</li>  
                    <li onClick="fillM(this)" onMouseOver="over(this)" onMouseOut="out(this)">Dezember</li>  
  
                </ul>  
            </div>  
  
            <div id="year">  
            	<ul>  
                	<li onClick="fillJ(this)" onMouseOver="over(this)" onMouseOut="out(this)">2008</li>  
                	<li onClick="fillJ(this)" onMouseOver="over(this)" onMouseOut="out(this)">2009</li>  
                    <li onClick="fillJ(this)" onMouseOver="over(this)" onMouseOut="out(this)">2010</li>  
                </ul>  
            </div>  
  
  
            <!-- Ende: Navi: Zeitkonto -->  
  
  
  
            <!-- Einträge -->  
            <div id="eintrag">	  
        	</div>  

Ich hoffe ihr könnt mir helfen.
Vielen Dank im Voraus.

  1. hi,

    ich habe folgendes Problem:

    Ich starte ein Ajax Request das wiederum per PHP Daten aus einer DB holt. Der Ajax Request funktioniert wenn er mit <body onload"..."> gestartet wird. Allerdings ändert sich das wenn der Ajax R. per onClick gestartet wird.

    Es erscheint dann folgender Fehler: Notice: Undefined index: Juni in D:...

    Wo wird denn die Fehlermeldung erzeugt? Im DOM oder auf dem Server?

    Prüf das mal.
    Hotti

    1. hi,

      Es erscheint dann folgender Fehler: Notice: Undefined index: Juni in D:...

      Wo wird denn die Fehlermeldung erzeugt? Im DOM oder auf dem Server?

      Natürlich kann das nur vom Server kommen, JS kennt das FS nicht und auch kein LW D:\

      Also: Der Fehler liegt in Deiner Parameterliste. Der Delimiter ist das &, gleichermaßen hast Du den März als M&auml;rz wo auch ein & drin ist. Damit wird Deine Parameterliste inkonsistent.

      Die Lösung des Problems heißt encodeURIComponent('März').

      Generell:
      key=encodeURIComponent(value)&key=ascii

      Hotti

  2. Hallo,

    Es erscheint dann folgender Fehler: Notice: Undefined index: Juni in D:...

    dein PHP-Script sucht also nach einem Array-Eintrag, den es nicht gibt.
    Erster Ansatz: Sucht das Script wirklich nach dem Index 'Juni', oder sind da noch Whitespaces (Blanks, Zeilenumbrüche) mit drin? (Im HTML-Quelltext würdest du sie sehen, in der Browser-Ausgabe nicht.)

    <a href="javascript:monthIn()"><div id="filterM" class="zeitNavi"><?php include 'getmonth.php' ?></div></a>

    Hier hast du ungültigs HTML: Ein a-Element darf kein Blockelement (div) enthalten. Aber selbst wenn der Browser darüber großzügig hinwegsieht: Schau mal in den Quellcode - ich bin mir fast sicher, dass der Inhalt des div-Elements, auf den du später mit innerHTML zugreifst, noch Zeilenumbrüche enthält, oder womöglich eine UTF8-BOM. Die würdest du dann mit auslesen!

    So long,
     Martin

    --
    Wer im Glashaus sitzt, sollte Spaß am Fensterputzen haben.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Also es war der fehlerhafte HTML-Code. Ich danke dir vielmals für den Tipp.

      Gruß
      Burak