Ist es möglich in php eine JavaScript Funktion auszulösen?
Ich muss eine JavaScript Funktion auslösen um auf Seite „2“ zu kommen die aber durch ein neu Ladens von php nach einen button clicks geschlossen wurde aber ich bekomme das irgendwie nicht hin obwohl ich allen regeln die ich im Internet lese befolge, weiß jemand was ich falsch mache?
3 Antworten
Ich glaube du hast ein irrsinniges Konzept und du solltest diesen teil von Grund auf neu denken.
Ich kann mir vorstellen das es mit Jquery bzw Ajax (asynchrones nachladen von Inhalten) möglich ist, aber das ist mehr eine behelfslösung.
Dein Problem muss von Grund auf beseitigt werden.
Warum muss der seitenwechsel denn mit PHP ausgelöst werden das ist wahrscheinlich der Fehler in deinem Konzept
Wieso
Du kannst doch beim aktualisieren des alten Status übernehmen wenn du diesen dem PHP mitliest.
Ohne diese Info könnte ja ein JS Aufruf auch dein Problem nicht lösen
Aber wieso werden überhaupt die Texte eines Acordeons aktualisiert.
das sich das accordeon schließt heist nur das du den status nicht speicherst , entweder browserseitig im cookie oder serverseitig in der session und dann in der ausgabe gleich als class mitangeben . oder wie schon erwähnt mit ajax im hintergrund arbeiten
Ja aber warum muss es von PHP ausgelöst werden.
Das macht überhaupt keinen Sinn.
Was veranlasst perpet dazu dass du möchtest das an seitenwechsel stattfindet ein Klick event?
Oder ist deine Frage eher wie du das Akkordeon nach einem neuen Laden der Seite an einer bestimmten Position wieder öffnen kannst?
Natürlich kannst du mit PHP auch direkt diesen Wechsel zur Seite 2 ausführen
Php reagiert ja wohl bereits auf deinen Klick
Dazu brauchst du kein JS mehr
das wäre die header("location:..."); lösung im php , die du aber bei deinem problem gar nicht brauchst .
Dazu müsste man genauer verstehen wie deine Implementierung ist
Wie soll es funktionieren
Was möchtest du erreichen
<?php
header("Status: 301 Moved Permanently");
header("Location: http://www.beispiel.de");
exit;
?>
Das ist z.b. eine Weiterleitung in PHP
- HTTP ist stateless
- php wird ausgeführt und das ergebnis an den browser geschickt
- php wird beendet
- der server weiss dann von nichts .
- javascript für sich arbeite im browser
- php und javascript haben so gesehen gar nichts miteinander zu tun
- php kann aber javascript mit ausliefern , dieses läuft dann im browser
- eine seite die im browser geschlossen wurde ist weg , der ganze code ist weg
- über domain/port grenzen hinweg ist meist kein zugriff erlaubt , das verhindert die origin .
- damit das php weiss welcher user was tut und eben das stateless vom http protokoll zu überbrücken , gibt es sessions auf der serverseite , die durch eine ID im browser via cookie angelegt wird un bei jedem aufruf der webseite wird diese ID mitgeliefert , dann auf dem server mit dieser ID die gespeicherten daten geladen .
deine beschreibung lässt viele vermutungen zu aber keine eindeutige sache.
du kannst mit javascript im hintergrund eine anfrage an das php script stellen und dir daten zurückgeben lassen und mit einer funktion im browserjavascript darauf reagieren .
also am besten lädst du dein beispiel irgendo hoch udn erklärst genau wa du versuchst zu machen . vielleicht wird das dann so einduetig das man dir helfen kann .
in den meisten fällen scheitert aber dein konzept an dem stateless http und daran das eben php und browser komplett voneinander getrennt sind . wenn dein browser die seite bekommt ist das php schon lange beendet und der server weiss von nix .
willst du nur mit php auf eine andere seite , musst du mit einem
header("location:neueseite.php");
senden und den browser veranlassen diese seite zu laden . dabei darf vorher noch kein HTML etc ausgegeben worden sein .
Irgendwie muss mein Vorhaben doch irgendwie gehen und wie lade ich mein Beispiel hoch? Bei meiner letzten Frage hatte ich damit auch schon Schwierigkeiten 😓
am besten nutzt du sowas wie pastebin.com lädst dort die einzelnen seiten hoch / html bzw php . und postest die einzelnen links . das können wir uns dann angucken und fachsimpeln , was die beste lösung wäre , oder obs eine andere lösung gibt .
ah ok , ja da hast du das problem , das du den status aufg dem server speichern misst , mach dich mal mit PHP sessions vertraut und übergebe dann entweder über post inputgelder oder über paramter an der url was der user aktuell nutzt und dann lade es direkt im php nach und füge es ein .
da gibt es verschiedene lösungen . du musst leider lernen was ich als antwort gestellt hab , die punkte die ich genannt habe , zeigen das grundsätzliche problem auf . deins erver weiss von nichts wenn du die seite neu hast , dem musst du aber mitteilen was der aktuelle zustand ist und das dein php diesen zustand erkennen muss und entsprechend die seite so ausgeben muss .
quasi musst du die parameter vorher abfragen und dann deine ausgabe anpüassen , das geht nicht so einfach mit php im html wie du es jetzt hast und vor allem micht ohne parameter .
Jedes 7. Wort von dir klingt unbekannt, warum kann es nicht einmal einfach funktionieren mit onload oder so etwas.….wo sollte ich jetzt anfangen?
Doofe Frage aber wäre es nicht eventuell einfacher gleich das ganze php beim Laden der Seite mit zu laden und den Button einfach weg zu lassen? Würde das gehen?
das problem ist, ds du dich erstmal mit der stuerung beschäftigen musst .
willst du einen bestimmten inhalt haben könntest du den z.b. so ansprechen
http://deinedomain.de/deineseite.php?artikel=1
in deinem php ließt du dann diesen parameter aus
$artikel = $_GET["artikel"];
jetzt weiss dein PHP welcher artikel geladen werden muss .
da aber server vergesslich sind, musst du das speichern in einer Session
pseudocode , da ich jetzt nicht dein accordeon kenne sondern hier nur die struktur darstellen will .
<?php
/* lade session */
session_start()
/* guck ob es schon ein artikel gibt , wenn nicht dann setze default auf 0 */
if (!isset($_SESSION["derartikel"])) {
$_SESSION["derartikel"] = 0;
}
/* guck ob der user ein artikel gewählt hat , wenn ja dann trage das in die session ein */
if (isset($_GET["artikel"])) {
$_SESSION["derartikel"] = $_GET["artikel"];;
}
/* binde artikel ein in deiner seite , entweder defaul 0 (keinen) oder vom webbesucher mit parameter bestimmt artikel z.b. 1 */
....
?>
<accordeon class="<?php if ($_SESSION["derartikel"] == 1) { echo " show "; }?>" ><?php echo "meinersterartikel";?></accordeon>
<accordeon class="<?php if ($_SESSION["derartikel"] == 2) { echo " show "; }?>" ><?php echo "meinzweiterartikel";?></accordeon>
.
.
.
Gut zusammengefasst
Ohne wirklich zu wissen was der Fragesteller tatsächlich will
Gibt es viele Vermutungen und die unterschiedlichsten Ansätze die aber alle falsch sein können.
Warscheinlich gibt es für das Problem aber sogar eine einfache Lösung trotz dem Konstrukt.
Man muss nur wissen um wa es wirklich geht
Ich habe Texte in einem accordion die schon perfekt angezeigt werden aber wenn php diese Texte aktualisiert schließt sich ja das accordion und das ist einfach nicht praktisch aber ich weiß absolut keine bessere Lösung da ich Anfänger bin und so etwas noch nie zuvor gemacht habe