HTTP-Request Wertübergabe an dritte Datei

im grunde sind es doch nur 8 Links

Und nur einen davon manipulierst er, so dass er überhaupt einen Request ausführen könnte.

w3c hat gesagt.:
getElementById introduced in DOM Level 2
Returns the Element whose ID is given by elementId. If no such element exists, returns null. Behavior is not defined if more than one element has this ID.

....diese Methode liefert ein einziges Element oder NULL, jedoch niemals 8 Links.
 
Und nur einen davon manipulierst er, so dass er überhaupt einen Request ausführen könnte.



....diese Methode liefert ein einziges Element oder NULL, jedoch niemals 8 Links.

er soll ja auch nur den link manipulieren der ausgeführt wurde, die anderen sind ( solange nicht angeklickt) unwichtig und mit anklicken wird die funtkion neu gestartet.
Zumindest denke ich so was scheinbar völlig falsches denken ist.

Kennst du denn ein tutorial wo ich genau das lerne zu lösen?
 
er soll ja auch nur den link manipulieren der ausgeführt wurde, die anderen sind ( solange nicht angeklickt) unwichtig und mit anklicken wird die funtkion neu gestartet.
Zumindest denke ich so was scheinbar völlig falsches denken ist.

Das Problem ist (wie Sven schon sagte) das folgendes nicht funktioniert :

Javascript:
function $(id) {
    return document.getElementById(id);
} 

window.onload = function() {
    $('link').onclick = function() {
       getHttpRequest();
       return false;
    }
}

Das kannst du so oft ausführen wie du willst. Onclick wird immer nur an den ersten Link gebunden weil document.getElementById(id); dir nur 1 Element zurück liefert und zwar 1. immer das gleiche und 2. immer das erste.

Lösungswege dafür wären:
- Den onclick Handler nicht dynamisch sondern von vornherein statisch zu binden.
- Unterschiedliche IDs
- Anstatt ID irgendwas anderes nehmen (z.B. Class)
- Vom Elternelement aus alle Kindelemente des gleichen Tags zu selektieren.
 
Zuletzt bearbeitet:
wenn das nicht zuviel aufwand wäre, könntest du mir das evt umsetzen?

dann bitte mit kurzer erklärung das ich weiß was du genau gemacht hast und warum.
 
HTML:
<!-- Möglichkeit 1 -->
	<a href="#?pro=1" onclick="getHttpRequest();return false;">Profil</a>
	<a href="#?pro=2" onclick="getHttpRequest();return false;">Fotos</a>  
<!-- EM1 -->

<!-- Möglichkeit 2 -->
	<a href="#?pro=1" id="link1">Profil</a>
	<a href="#?pro=2" id="link2">Fotos</a>  	

<!-- EM2 -->

<!-- Möglichkeit 3 -->

	<div id="parent">
		<a href="#?pro=1" >Profil</a>
		<a href="#?pro=2" >Fotos</a>
	</div>
	
<!-- EM3 -->

Javascript:
/* gehört zu Möglichkeit 2 */
	idArr = new Array("link1","link2");
	/* EM2 */
	
	function $(id) {
		return document.getElementById(id);
	} 
	
	window.onload = function() {
		/* gehört zu Möglichkeit 2 */
		for(i = 0; i < idArr.length; i++){
			$(idArr[i]).onclick = function() {
			   getHttpRequest();
			   return false;
			}			
		}
		/* EM2 */
		
		/* gehört zu Möglichkeit 3 */
		aTags = $('parent').getElementsByTagName('a');
		for(i = 0; i < aTags.length; i++){
			aTags[i].onclick = function() {
			   getHttpRequest();
			   return false;
			}			
		}
		/* EM3*/
	}
	
	function getHttpRequest(){
		alert("Running.");
	}

Falls was unklar ist frag einfach nochmal nach.

Mir ist übrigens noch etwas aufgefallen was nicht funktionieren dürfte :
Du bindest den onclick Handler an z.B. <a href="?pro=1" id="link">Profil</a> .
Und dann willst du beim onClick den GET Parameter aus der URL auslesen.

Das Problem dabei :
Die Url wird sich dank return false; garnicht ändern.
Selbst wenn du return false; raus nimmst greift der onclick Handler früher als der Aufruf des Links, d.h. die URL ändert sich wenn überhaupt immer erst nachdem du versuchst sie auszulesen.
 
Danke für die arbeit,

ich habe alle 3 varianten ausprobiert, er liefert mir auch: alert("Running.");

Aber das laden der entsprechenden PHP datei bleibt aus. Ich habe dann

PHP:
    function getHttpRequest(){
        alert("Running.");
    }


gegen meine function getHttpRequest(){... getauscht und er liefert mi nichts.

Es wird an der von dir beschriebenen sache mit dem onclick liegen, wie ist denn da der richtige übergang?

Ich sitze jetzt seit 3 Tagen an diesem problem und sehe keine wirkliches ende.

lg
 
Übergib doch einfach im onclick this.href.
Beispiel
Javascript:
for(i = 0; i < idArr.length; i++){
			$(idArr[i]).onclick = function() {
			   getHttpRequest(this.href);
			   return false;
			}			
		}

function getHttpRequest(url){
		alert(url);
	}
 
Dann bleibt er auf seite Laden stehen. Dreamweaver zeigt keine fehler an.

links:
PHP:
	<a href="#?pro=1" id="link1">Profil</a>
	<a href="#?pro=2" id="link2">Fotos</a>

JS:

PHP:
/* gehört zu Möglichkeit 2 */
    idArr = new Array("link1","link2");
    /* EM2 */
   
    function $(id) {
        return document.getElementById(id);
    }
   
    window.onload = function() {
        /* gehört zu Möglichkeit 2 */
      for(i = 0; i < idArr.length; i++){
            $(idArr[i]).onclick = function() {
               getHttpRequest(this.href);
               return false;
            }          
        }
 
function getHttpRequest() { 
    
    var xmlhttp = null; 
    // Mozilla 
    if (window.XMLHttpRequest) { 
        xmlhttp = new XMLHttpRequest(); 
    } 
    // IE 
    else if (window.ActiveXObject) { 
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
  
    xmlhttp.open("GET", 'ink/profil.php' + (this.href) , true); 
     

    xmlhttp.onreadystatechange = function() { 
        if(xmlhttp.readyState != 4) { 
            $('ergebnis').innerHTML = 'Seite wird geladen ...'; 
        } 
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
            $('ergebnis').innerHTML = xmlhttp.responseText; 
        } 
    } 
    xmlhttp.send(null); 
}  
            }
 
Fällt dir was auf ?
Meins
Javascript:
function getHttpRequest(url){

Deins
Javascript:
function getHttpRequest(){
 
das hatte ich auch gesehen und geändert, macht aber keinen unterschied bleibt denoch an der selben stelle hängen
 

Neue Beiträge

Zurück