/ / Kombination von PHP $ _GET [''] mit Javascript-Funktion - PHP, Javascript, Xmlhttprequest

Kombinieren von PHP $ _GET [''] mit Javascript-Funktion - php, javascript, xmlhttprequest

Ich schreibe gerade eine Galerie, die bis jetzthat AJAX und Javascript mit einer XML-Datei kombiniert, um alle Bilder zu laden. Jetzt bin ich zum spaßigen Teil gekommen, wo ich auf ein Bild klicke, um die innere Galerie zu betreten. (Auf der ersten Seite laden sie ein Bild jeder Sitzung und wenn ein Bild gedrückt wird, wird es mit dem Rest der Bilder dieser Sitzung fortgesetzt.)

Das Problem, das ich mit AJAX habe (ich bin mir sicher, dass es auch einen ordentlichen Hack gibt!) Ist, dass wenn die Seite neu geladen wird, es automatisch zum Sitzungsindex zurückkehrt, da es keine URL-Änderung gibt.

Was ich jetzt gemacht habe, ist bisher, eine Javascript-Funktion in ein Dokument zu legen, wo nur der Galerie-Index geladen wird. Das funktioniert einwandfrei.

In der anderen Datei habe ich ungefähr den gleichen Code, aber stattdessen lädt es die Funktion, die den Rest der Session-Images lädt, aber ich bekomme es nicht zur Arbeit.

Hier ist das Skript, das die spezifischen Session-Images laden soll.

<script type="text/javascript">
window.onload = displayGallery(<?php echo $_GET["session"]; ?>);
</script>

<div id="gallery">

</div>

Als ich gerade nur javascript und ein "onload" reinkommeder Link klappte einwandfrei, aber dann hatte ich das Problem, die Seite neu zu laden. Jetzt habe ich nur diese Datei und $ _GET die Variable für "displayGallery ()"

function displayGallery(sessionAtt)

Um dies zu verdeutlichen, möchte ich erklären, was ich brauche. Ich brauche Hilfe, damit die displayGallery (sessionAtt) ausgeführt wird, nachdem die essenzielle Variable aus der URL abgerufen wurde.

Ich bin sehr frisch auf Javascript. Erledigt die meisten Skripte in PHP bis jetzt.

BEARBEITEN:

Um die Seite etwas zu erklären: Es ist eine Galerie, die ich für einen Freund von mir mache. Es gibt kein Login für irgendjemand anderes außer ihr und alle Unterseiten (Start, Gallery, About, etc.) werden über php "include" geladen.

Das XML:

<gallery>
<session>
<sessionName>Beauty</sessionName>
<path>gallery/beauty/</path>
<item>
<file>_DSC2331.jpg</file>
<name>Picture 1</name>
</item>
<item>
<file>_DSC2339.jpg</file>
<name>Picture 2</name>
</item>
<item>
<file>_DSC2350.jpg</file>
<name>Picture 3</name>
</item>
<date>2011-08-03</date>
</session>
<session>
<sessionName>Red</sessionName>
<path>gallery/red/</path>
<item>
<file>_MG_6227-web.jpg</file>
<name>Picture 1</name>
</item>
<item>
<file>_MG_6235-web.jpg</file>
<name>Picture 2</name>
</item>
<item>
<file>_MG_6240-cropped-web.jpg</file>
<name>Picture 3</name>
</item>
<date>2011-08-03</date>
</session>
</gallery>

Die js:

function displayGallery(sessionAtt)
{
var xmlDoc = loadDoc("gallery/gallery.xml");
var sessions = xmlDoc.getElementsByTagName("session");
var txt = getGallery(sessions, sessionAtt);
document.getElementById("gallery").innerHTML = txt;
}

function getGallery(sessions, sessionAtt) {
var items = null,
i = 0,
j = 0,
sessionName = "",
link = "",
img = "",
path = "",
file = "",
txt = "";
for (i = 0; i < sessions.length; i++) {
sessionName = sessions[i].getElementsByTagName("sessionName")[0].childNodes[0].nodeValue;
if(sessionName == sessionAtt)
{
items = sessions[i].getElementsByTagName("item");
path = sessions[i].getElementsByTagName("path")[0].childNodes[0].nodeValue;
for (j = 0; j < items.length; j++) {
file = items[j].getElementsByTagName("file")[0].childNodes[0].nodeValue;
link = "<a href="" + path + file + "" rel="lightbox[" + sessionName + "]" title="" + sessionName + "">";
img = "<img src="/images/" + path + file + "" class="thumb" onclick="displayImage();" /></a>";
txt += link + img;
}
}
}
return txt;
}

Ich habe versucht, das Skript mit sessionAtt in der Funktion ausgeführt und es funktioniert.

window.onload = displayGallery;

Aber wenn ich es ändere

window.onload = displayGallery("Red");

sowohl manuell als auch mit PHP ... Nichts.

Antworten:

1 für die Antwort № 1

Ihr Code funktioniert gut für mich. Das einzige, was ich anders gemacht habe, habe ich benutzt <body onload="displayGallery("Red")"> eher, als window.onload = displayGallery("Red");

Wie Martin darauf hingewiesen hat window.onload versucht zu finden <div id="gallery"> Vor Die Seite wird geladen und gibt einen Fehler aus: document.getElementById ("Galerie") ist null

Verwenden <body onload="displayGallery("Red")"> wartet auf den Ladevorgang der Seite vor dem Aufruf von displayGallery.


0 für die Antwort № 2

Ich bin mir nicht sicher, ob ich verstanden habe, was Sie vorhaben. Aber versuche diese Dinge.

**. Machen Sie eine JavaScript-Variable, die den Wert von GET ["Sitzung"] enthält. und später diese Variable verwenden. es ist auch einfacher für das Debuggen.

**. indedead von window.onload eine Funktion nennen es "init" und im body-Tag schreiben:

<head>
<script>
function init(){
//displaying gallery or other stuff
}
</script>
</head>
<body onload="init();">

Dadurch wird sichergestellt, dass das Skript nach dem Laden der Seite ausgeführt wird.

** Wenn ich dich richtig verstanden habe, gibt es eine Sitzung für jeden Benutzer. und in diesem Fall (als Faustregel) ganz oben in Ihrer PHP - Datei, sogar vor der

session_start();

0 für die Antwort № 3

Nach dem Lesen Ihrer Beschreibung mehrmals ...

1) GET-Variablen funktionieren nur, wenn Sie Variablen in der URL für zB angeben. index.php? Sitzung = Modell1

2) Sie sagen, dass die Zurück-Schaltfläche nicht funktioniert, weil die Seite nicht geändert wird, was falsch ist, wenn Sie Variablen richtig verwenden

Ihre Indexseite sollte wie folgt mit jeder Sitzung verknüpft sein: <a href="gallery.php?session=modela"> Nur dann können Sie das Javascript verwenden, um die Variable in der gallery.php zu ziehen


0 für die Antwort № 4

Für mich scheint es, dass Sie XSLT anstelle dessen verwenden sollten, was Sie tun ... markieren Sie es als WIKI, da es Ihre spezifische Frage nicht beantwortet


0 für die Antwort № 5

Anstatt von window.onload = displayGallery(<?php echo $_GET["session"]; ?>);

Benutzen

window.onload = function() {
displayGallery(<?php echo """ . $_GET["session"] . """; ?>);
};

Wie du gesagt hast, weise die Funktion zu window.onload = displayGallery; funktioniert. Bei der Zuordnung wie window.onload = displayGallery("Red");Was passiert, ist, dass die Funktion nicht angefügt wird window.onload, aber was es ist kehrt zurück ist. Und die Funktion gibt nichts zurück, also window.onload = undefined;.

Dies erklärt auch, warum nichts passiert, weil die Funktion nicht onload aufgerufen wird, sondern sobald der Browser das Skript ausführt.

Das habe ich behoben, indem ich eine Funktion zugewiesen habe, ohne sie auszuführen (window.onload = function() { ... }), und legte die Funktion, die Sie sind Ausführen in ihm.