HTTP-Request Wertübergabe an dritte Datei

Godstyle

Erfahrenes Mitglied
Moin Leutz,

habe ein Problem mit der Wert übergabe an eine php Datei.

link zum aufruf:

PHP:
<a href="#?pro=1" id="link">Profil</a>

js script:

Javascript:
function $(id) {
    return document.getElementById(id);
}
 
window.onload = function() {
    $('link').onclick = function() {
       getHttpRequest();
       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', 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 datei

PHP:
<?php 
$pro = $_GET['pro'];
if($pro == "1") { 
    echo "Dies ist der übergebene Text";
}
?>

ohne
PHP:
$pro = $_GET['pro'];
if($pro == "1") {

klappt es, also liegts nicht an den verlinkungen.



Da ich das js script für ca 10 links verwenden möchte suche ich eine Lösung wir ich ihm die link id (indem Fall 1) bis ins php dokument übermitteln kann.

Mit $_Get hab ich es mir wohl zu einfach gemacht. Ist irgendwie auch logisch das es nicht geht, da er es nicht abrufen kann.

Hoffe mir kann wer helfen.

lg und noch einen schönen Abend.

Das problem liegt an der übergabe von dem link an die js datei und die dortige umwandlung, das ich es in der php in eine variable bekomme.

Kann mir da einer helfen, oder mir sagen wie ich das bei google finde? Leider fehlen mir da die Fachwörter.
 
Moin,

der Fehler ist das # im Link.
Das definiert einen Anker, alles was danach kommt wird als Name des Ankers angesehen.

Lasse die Raute weg, sie scheint da eh keinen Sinn zu machen.
 
danke sven,

das war mir auch aufgefallen, ohne klappt es jedoch auch nicht. hier mal die aktuellen scripte:

links:

PHP:
        <a href="?pro=1" id="link">Profil</a>
        <a href="?pro=2" id="link">Fotos</a>

javascript:

PHP:
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;
}


function $(id) {
    return document.getElementById(id);
}
 
window.onload = function() {
    $('link').onclick = function() {
       getHttpRequest();
       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?pro=' + get_GET_param("pro") , 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);
}


und die php datei:



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";
}
unset($pro);  
?>

der fehler liegt hier:

xmlhttp.open("GET", 'ink/profil.php?pro=' + get_GET_param("pro") , true);

er schafft es nicht den anker zu übermitteln den ich ihm bei den links mitgebe.

Weiter fiel mir auf, das er wenn ich den ersten anklicke "2" zurück liefert und wenn ich den 2ten anklicke nichts.
Ich weiß leider auch nicht wo er die falschen Werte her bezieht.
 
Erstmal zu dem Problem mit dem 1.+2. Link:

Eine ID muss immer eindeutig sein, $('link') wird dir deshalb immer nur den 1.Link liefern.

Ansonsten:
Code:
var get_param_str = location.search.substring(1, location.search.length);

Du ermittelst das die GET-Parameter von location....location ist aber die aktuelle Seite. So, wie es den Anschein hat, suchst du allerdings den Parameter aus dem Link :eek:

Was das erstere Problem betrifft: du versuchst da anscheinend so etwas wie die Selektoren von jQuery nachzustellen, was ja nicht schlecht sein muss, wenn man nicht das Framework will, sondern nur die Selektoren.
Die gute Nachricht: du musst das Rad nicht selbst erfinden(dass es nicht ganz so einfach geht, wie du denkst, weisst du jetzt ja :) ).
Du musst auch das Eine nicht gezwungenermaßen nehmen, wenn du das andere willst...die "Selektor-Engine" von jQuery gibt es auch Standalone:)

Sizzle
 
Ok,

ich habe das mit location verstanden, es spielt sich im Grunde auch alles in der selben Datei ab dateien im Anhang.

Home.php hat die links drinnen. beim Anlicken startet er die js Funktion und das ergebnis soll im Anschluss in einem Div wiedergegeben werden. Daher habe ich mit location gearbeitet.

Das eine ID eindeutig ist ist ebenfalls logisch, nur habe ich die selbe verwendet, da er ja auch das selbe Script aufrufen soll.

Sizzle habe ich mir auch angesehen das stellt er mir auf xampp aber nicht dar.
 

Anhänge

  • test.zip
    1,7 KB · Aufrufe: 15
Sizzle habe ich mir auch angesehen das stellt er mir auf xampp aber nicht dar.
Hö? Was hat denn das eine mit dem anderen zu tun?

Ich werd ja nicht müde es zu sagen:
Javascript ist und bleibt Clientseitig.
 
Das hörte sich so an als würdest du es gerne verwenden, kannst es aber nicht weil xampp es dir nicht darstellen kann, was wiederrum nicht sein kann. :)
 
was heißt gerne verwenden. Ich habe mich damit noch nicht wirklich beschäftigt. Wenn es jedoch mein Problem löst dann ja.

Ich kann mir nicht vorstellen das es so schwer sein soll mein ziel zu vewirklichen da ich denke das ich sehr nah an der lösung bin.

im grunde sind es doch nur 8 Links die auf einen div container zugreifen sollen und dort was unterschiedliches anzeigen.

Dabei greifen alle 8 auf eine PHP datei zu wo eine Db abgfrage eingebaut werden soll.

An der stelle wäre es auch noch möglich das ich die ( links 8 verschiedene php dateien einlesen lasse.
 

Neue Beiträge

Zurück