Einstellung session-variable in php über jquery-click-Ereignis
So, ich schaue mir alle möglichen Antworten, die bisher auf Stackoverflow. Aber egal, wie ich versuche, ich kann nicht ankommen dieses zu wirken.
Ich versuche eine sessionvariable nach einem angeklickten verknüpft werden.
dies kann sein 'grid' oder 'Liste'
Ändern kann ich die Klasse, und die Aussicht auf den entsprechenden div. Aber, meine $.post Aufruf von php nicht übergeben Sie die variable ( im vorausgesetzt, da passiert nichts ) oder meine php-Aufruf ist falsch.
Hier ist mein code:
HTML
<li class="display-control-list-item" > <a href="javascript: void(0)" class="js-set-display list" id="list" > Listview </a> </li>
<li class="display-control-list-item" > <a href="javascript: void(0)" class="js-set-display grid" id="grid" > Gridview </a> </li>
JQUERY
function set_display_type( type ) {
if ( type == 'grid' ) {
$( '.js-set-display.list' ).removeClass( 'active' );
$( '.js-set-display.grid' ).addClass( 'active' );
$( '.content-inner' ).attr({ 'class' : 'container content-inner gridview' });
var view = 'gridview';
$.post( 'library/fx.behaviour.php' , { setdisplay: view });
}
if ( type == 'list' ) {
$( '.js-set-display.grid' ).removeClass( 'active' );
$( '.js-set-display.list' ).addClass( 'active' );
$( '.content-inner' ).attr({ 'class' : 'container content-inner listview' });
var view = 'listview';
$.post( 'library/fx.behaviour.php' , { setdisplay: view });
}
}
und meine PHP in fx.behaviour.php
$_SESSION[ 'display' ] = 'listview'; //set default
if ( $_POST[ 'setdisplay' ] != '' ) {
$view = $_POST[ 'setdisplay' ];
$_SESSION[ 'display' ] = $view;
}
Kurz: die sessionvariable nicht aktualisieren, nach dem Klick auf die url und übergibt den Wert durch jquery an php.
- und versuchen, unset Ihre $_SESSION-variable setzen, bevor es wieder
- ich denke, das ist, wo mein problem ist. die Variablen sind nicht erhalten in php. wenn ich versuchen würde, nur das zu tun, $_SESSION[ 'Anzeige' ] = $_POST[ 'setdisplay' ]; nichts ändert sich. aber die Standard-Einstellung wie oben beschrieben arbeitet
- versuchen Sie, print_r($_POST) in der php um zu sehen, was dein post-array hat
- es druckt ein leeres array. also das ist klar 🙂 ich habe versucht, die Weitergabe der Variablen durch $.ajax-Aufruf, aber gleiche Ergebnis
- und wenn Sie nicht erhalten, jede variable überprüfen Sie Ihren Pfad auf
jQuery
, denken Sie daran, wenn diephp
Datei in einen Ordner außerhalb SiejQuery
Ausführung-Datei, die Sie hinzufügen müssen../
am Anfang Ihrerphp
Datei-Pfad anjQuery
$.post()
definition - wie
$.post( '../library/fx.behaviour.php' , { setdisplay: view });
- jquery-Datei im assets/script/ php-Datei in library/ habe versucht, den Pfad als die ganze url ein, aber hat nicht funktioniert
- prüfen Sie, ob Ihr jquery variable
view
mitalert(view);
nach jedemvar view = '';
variable definition - immer den richtigen Wert in der Warnung
- ok, also dein problem ist der Weg
- Das denke ich auch. Ich entfernte meine htaccess aus dem Verzeichnis, dachte, es könnte etwas damit zu tun haben Einschränkungen in der rewriterule, aber keine änderung. Im mit Sie den vollständigen Pfad zu der Datei, die jetzt in die jquery ( www. someurl .nl/ ), klebte es in die browser, um es zu überprüfen und es arbeiten dort
- versuchte es mit einem ajax-Aufruf von php wieder bekam eine Fehlermeldung: Ursprungs-URL ist nicht erlaubt, Access-Control-Allow-Origin.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, was ich tun würde, (Schnitt etwas code für Schnelligkeit):
HTML (die Sie nicht benötigen javascript void-code, wenn Sie mit jQuery):
jQuery:
PHP:
Ich verwendet
$_POST['display']
eher alssetdisplay
für die Benennung der Konsistenz. Es könnte auch sein, lohnt sich zu überprüfen, Ihre jQuery-Aufruf wird eine gültige 200-Antwort. In Chrome können Sie dies tun, indem Sie dem Inspektor, die Auswahl der Registerkarte "Netzwerk", klicken Sie auf die Schaltfläche, und beobachten Sie für die Anfrage.versuchen, Ihr php in der jQuery-Datei (nur zum test) und echo etwas
echo 'Foobar';
und in Ihre jQuery-Ausführung-Datei hinzufügen<?php include('../library/fx.behaviour.php');
und ändern Sie das Verzeichnis in den include-ZeileUPDATE
Versuchen Sie, diese
Ich glaube nicht, sollten Sie haben, {}, wenn Zugriff auf die string-im Rahmen der Funktion: