JavaScript Funktion beim 2. Aufruf nicht gefunden

TheJoker

Grünschnabel
Guten Tag allerseits

Ich habe ein kleines Problem mit JavaScript/Ajax.

In einem Seitenbaum(php file tree) wird eine Funktion aufgerufen, welche den Seiteninhalt neu reinlädt.
Code:
function getContentByPath(str)
{
	 if (window.XMLHttpRequest)
	 {
		 getContentByPath=new XMLHttpRequest();
	 }
	 else
	 {
	 	 getContentByPath=new ActiveXObject("Microsoft.XMLHTTP");
	 }
	 getContentByPath.onreadystatechange=function()
	 {
		 if (getContentByPath.readyState==4 && getContentByPath.status==200)
		 {
			 document.getElementById("content").innerHTML=getContentByPath.responseText;
	     }
	 }
	 getContentByPath.open("GET","core/ajax/getContentByPath.php?q="+str,true);
	 getContentByPath.send();
}

Die getContentByPath.php hat folgenden Inhalt

PHP:
<?php 
$var = $_GET['q'];
echo $var;
?>

Beim ersten mal, bei dem man die Funktion aufruft, funktioniert es perfekt. Sobald man Sie jedoch danach nochmals aufruft, wird die Funktion nicht mehr gefunden.

Code:
Uncaught exception: TypeError: 'getContentByPath' is not a function

Error thrown at line 1, column 0 in <anonymous function>(event) in http://filecloud.fabricas.ch/:
    getContentByPath('js/jquery/external')

Hat jemand eine Idee wo der Fehler liegen könnte?

Besten Dank

lg Pascal
 
Du überschreibst die Funktion. Du musst dir vorstellen, dass grundsätzlich erstmal alle Funktionen, wenn nicht explizit anders definiert, als Methoden des window-Objektes definiert werden. Ebenso ist das bei den Variablen. Da aber sowohl deine Funktion als auch deine Variable innerhalb dieser Funktion den gleichen Namen haben, wird erstmal die Funktion unter diesem Namen im window-Objekt gespeichert, sobald du diese Funktion aber aufrufst, überschreibst du sie mit der Variable innerhalb dieser Funktion. Dementsprechend gibt es da zwei Möglichkeiten: einerseits kannst du vor deine Variable var schreiben, was sie als Variable innerhalb dieser Funktion definiert, die aber nur dort gültig ist, andererseits kannst du deiner Variablen einen anderen Namen geben.
Code:
function getContentByPath(str)
{
  if(window.XMLHttpRequest)
  {
    var xhr = new XMLHttpRequest();
  }
  else
  {
    var xhr = new ActiveXObject('Microsoft.XMLHTTP');
  }
  
  xhr.onreadystatechange = function ()
  {
    if((xhr.readyState == 4) && (xhr.status == 200))
    {
      document.getElementById('content').innerHTML = xhr.responseText;
    }
  }
  
  xhr.open('GET', 'core/ajax/getContentByPath.php?q=' + str, true);
  xhr.send();
}
 
Besten dank für die schnelle hilfe. Hast mich vorm ausrasten gerettet :D
Jetzt im nachhinein ists eigntl logisch aber ich stand einfach aufm Schlauch :)

Nochmals danke! lg Pascal
 
Zurück