HTTP-Request Wertübergabe an dritte Datei

Jetzt kommen wir dann so langsam bei den JavaScript Grundladen an.

Durch
Javascript:
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;
            }          
        }

entsteht ja im Prinzip folgendes:
Javascript:
<a href="#?pro=1" id="link1" onclick="getHttpRequest(this.href);return false;">Profil</a>

Folglich passiert beim klick auf diesen Link ein Aufruf der Funktion getHttpRequest und als Parameter wird this.href ( also die url des angeklickten Links ) übergeben.

Javascript:
function getHttpRequest(url) { 
    /* 
     url enthält den übergebenen Link
     Also z.B. www.example.com/test.html#?pro=1
    */
}

Folglich kann
Javascript:
xmlhttp.open("GET", 'ink/profil.php' + (this.href) , true);

Aus 2 Gründen nicht funktionieren :
1. this.href existiert in diesem kontext garnicht sondern url
2. Aus url müssen erst die / der GET Parameter ( pro=1 ) extrahiert werden
 
Dann versuche ich den link zu zerlegen mit dem ursprünglichen script, das sieht nun wie folgt aus:

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(url) { 
    
    var xmlhttp = null; 
    // Mozilla 
    if (window.XMLHttpRequest) { 
        xmlhttp = new XMLHttpRequest(); 
    } 
    // IE 
    else if (window.ActiveXObject) { 
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
  		function get_GET_params() { 
   var GET = new Array(); 
   if(location.search.length > 0) { 
      var get_param_str = location.search.substring(1, location.search.length); 
      var get_params = get_param_str.split("&"); 
      for(i = 0; i < get_params.length; i++) { 
         var key_value = get_params[i].split("="); 
         if(key_value.length == 2) { 
            var key = key_value[0]; 
            var value = key_value[1]; 
            GET[key] = value; 
         } 
      } 
   } 
   return(GET); 
} 
  
function get_GET_param(key) { 
   var get_params = get_GET_params(); 
   if(get_params[key]) 
      return(get_params[key]); 
   else 
      return false; 
}
    xmlhttp.open("GET", 'ink/profil.php?pro=' + get_GET_params() , 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); 
}  
            }
 
Dir ist aber schon aufgefallen was du da jetzt für einen Käse fabriziert hast ?
Du hast anscheinend etwas Wild umeinander kopiert.

Jetzt stecken alle funktionen in deiner onload function

Und die get_GET_param und get_GET_params Funktionen stecken in der getHttpRequest Funktion.
 
Ich glaube derzeit das ich das nie hinbekomme das es läuft.

Stehe noch ganz am anfang von JS gehe auch die tuts durch aber diese sprache scheine ich nie zu begreifen...

wenn ich die function get_GET_param an andere stelle setze macht sie auch nichts und gibt mit einen leeren wert wieder.
 
Irgendwann fallen mir die Zähne aus vom vielen vorkauen :(

Javascript:
idArr = new Array("link1","link2");

	function $(id) {
		return document.getElementById(id);
	} 
	
	window.onload = function() {		
		for(i = 0; i < idArr.length; i++){
			$(idArr[i]).onclick = function() {
			   getHttpRequest(this.href);
			   return false;
			}			
		}				
	}
	
	function getHttpRequest(url){
		getParam = url.substr(url.indexOf('?'));
		
		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' + getParam , 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); 		
	}

Ich hab deine get_GET_param und get_GET_params Funktionen mal verworfen und das ganze durch getParam = url.substr(url.indexOf('?')); ersetzt.
 
Das möchte ich auch nicht, aber sollte es passieren, dann zahlt meine Versicherung dir die dritten ;)

So, auf deine Art klappt es. Hatte es auch nciht anders erwartet.

Nur jetzt habe ich den 3ten link dazu gesetzt:

link:
PHP:
	<a href="#?pro=1" id="link1">Profil</a>
	<a href="#?pro=2" id="link2">Fotos</a>  
        <a href="#?pro=3" id="link3">Videos</a>

js:

PHP:
idArr = new Array("link1","link2", "link3");
 
    function $(id) {
        return document.getElementById(id);
    }
   
    window.onload = function() {       
        for(i = 0; i < idArr.length; i++){
            $(idArr[i]).onclick = function() {
               getHttpRequest(this.href);
               return false;
            }          
        }              
    }
   
    function getHttpRequest(url){
        getParam = url.substr(url.indexOf('?'));
       
        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' + getParam , 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);        
    }


php

PHP:
<?php 
echo $_SERVER['QUERY_STRING'];

$pro = $_GET['pro'];
if($pro == "1") { 
    echo "Dies ist der übergebene Text";
}
if($pro == "2") { 
    echo "Dies ist der übergebene Text2";
}
if($pro == "3") { 
    echo "Dies ist der übergebene Text3";
}
unset($pro);  
?>

den 3ten erkennt er aber nicht.

wo muss ich das in der js noch ändern ausser im array wenn ich mehr links so einsetzen möchte?
 
Ehrlich gesagt kann ich keinen Fehler entdecken. Mehr als den Link erstellen und die ID dem Array hinzufügen so wie du es getan hast ist nicht nötig.
 
Fehler lag bei mir, habe 2 versionen einmal die ursprüngliche und dann deine in einem anderen ordner. hatte bei dreamweaver die falsche php geändert. dein script geht zu 100% daher hatte ich auch schn geschlossen aber konnte meinen beitrag nicht löschen.

nochmals vielen dank
 
Zurück