21 Stimmen

Wie man PHP-Session-Variablen von jQuery-Funktion in einer .js-Datei zugreifen?

Wie man PHP-Session-Variablen von jQuery-Funktion in einer .js-Datei zugreifen? In diesem Code möchte ich den "Wert" einer Session-Variablen abrufen

$(function() {
   $("#progressbar").progressbar({
      value: 37
   });
});

52voto

Erik Punkte 20180

Sie können die Javascript-Datei über PHP erzeugen. Nichts besagt, dass eine Javascript-Datei eine .js-Erweiterung haben muss. Zum Beispiel in Ihrem HTML:

<script src='javascript.php'></script>

Dann Ihre Skriptdatei:

<?php header("Content-type: application/javascript"); ?>

$(function() {
    $( "#progressbar" ).progressbar({
        value: <?php echo $_SESSION['value'] ?>
    });

    // ... more javascript ...

Wenn diese spezielle Methode nicht in Frage kommt, können Sie eine AJAX-Anfrage in Ihre Javascript-Datei einfügen und die Daten als JSON vom serverseitigen Skript zurückgeben.

10voto

Krimo Punkte 964

Ich hatte mit dem gleichen Problem zu kämpfen und bin auf diese Seite gestoßen. Eine andere Lösung, die mir eingefallen ist, wäre die folgende:

Geben Sie in Ihrer Html-Datei die Sitzungsvariable ein (meine hier ist $_SESSION['origin'] ) auf ein beliebiges Element Ihrer Wahl: <p id="sessionOrigin"><?=$_SESSION['origin'];?></p>

In Ihrem js, mit jQuery können Sie es wie folgt zugreifen: $("#sessionOrigin").text();

EDITAR: oder noch besser, in einem versteckten input

<input type="hidden" name="theOrigin" value="<?=$_SESSION['origin'];?>"></input>

7voto

icc97 Punkte 9849

Wenn Sie eine klarere Trennung von PHP und JS beibehalten wollen (das macht die Syntaxhervorhebung und -prüfung in IDEs einfacher), können Sie JQuery-Plugins für Ihren Code erstellen und dann die $_SESSION['param'] als eine Variable.

Also in page.php :

<script src="my_progress_bar.js"></script>
<script>
$(function () {
    var percent = <?php echo $_SESSION['percent']; ?>;
    $.my_progress_bar(percent);
});
</script>

Dann in my_progress_bar.js :

(function ($) {
    $.my_progress_bar = function(percent) {
        $("#progressbar").progressbar({
            value: percent
        });
    };
})(jQuery);

2voto

Mark Punkte 21

Sie können Ihre Sitzungsvariablen von Ihrem PHP-Skript an JQUERY übergeben, indem Sie JSON wie folgt verwenden

JS:

jQuery("#rowed2").jqGrid({
    url:'yourphp.php?q=3', 
    datatype: "json", 
    colNames:['Actions'], 
    colModel:[{
                name:'Actions',
                index:'Actions', 
                width:155,
                sortable:false
              }], 
    rowNum:30, 
    rowList:[50,100,150,200,300,400,500,600], 
    pager: '#prowed2', 
    sortname: 'id',
    height: 660,        
    viewrecords: true, 
    sortorder: 'desc',
    gridview:true,
    editurl: 'yourphp.php', 
    caption: 'Caption', 
    gridComplete: function() { 
        var ids = jQuery("#rowed2").jqGrid('getDataIDs'); 
        for (var i = 0; i < ids.length; i++) { 
            var cl = ids[i]; 
            be = "<input style='height:22px;width:50px;' `enter code here` type='button' value='Edit' onclick=\"jQuery('#rowed2').editRow('"+cl+"');\" />"; 
            se = "<input style='height:22px;width:50px;' type='button' value='Save' onclick=\"jQuery('#rowed2').saveRow('"+cl+"');\" />"; 
            ce = "<input style='height:22px;width:50px;' type='button' value='Cancel' onclick=\"jQuery('#rowed2').restoreRow('"+cl+"');\" />"; 
            jQuery("#rowed2").jqGrid('setRowData', ids[i], {Actions:be+se+ce}); 
        } 
    }
}); 

PHP

// start your session
session_start();

// get session from database or create you own
$session_username = $_SESSION['John'];
$session_email = $_SESSION['johndoe@jd.com'];

$response = new stdClass();
$response->session_username = $session_username;
$response->session_email = $session_email;

$i = 0;
while ($row = mysqli_fetch_array($result)) { 
    $response->rows[$i]['id'] = $row['ID']; 
    $response->rows[$i]['cell'] = array("", $row['rowvariable1'], $row['rowvariable2']); 
    $i++; 
} 

echo json_encode($response);
// this response (which contains your Session variables) is sent back to your JQUERY

1voto

SW4 Punkte 67314

Sie können nicht auf PHP-Sitzungsvariablen/Werte in JS zugreifen, eine ist serverseitig (PHP), die andere clientseitig (JS).

Was Sie tun können, ist Pass o return den SESSION-Wert an Ihr JS weitergeben, beispielsweise durch einen AJAX-Aufruf. Rufen Sie in Ihrem JS ein PHP-Skript auf, das einfach den Wert der SESSION-Variable an Ihr JS zurückgibt, und verwenden Sie dann Ihr JS, um diese zurückgegebenen Informationen zu verarbeiten.

Alternativ können Sie den Wert in einem COOKIE speichern, auf den beide Frameworks zugreifen können, auch wenn dies in Ihrer Situation vielleicht nicht der beste Ansatz ist.

ODER Sie können in Ihrem PHP etwas JS generieren, das die Variable zurückgibt/einstellt, d.h.:

<? php
echo "<script type='text/javascript'>
    alert('".json_encode($_SESSION['msg'])."');
</script>";
?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X