webentwicklung-frage-antwort-db.com.de

Zugriff auf PHP Sitzungsvariablen von der jQuery-Funktion in einer JS-Datei?

Zugriff auf PHP -Sitzungsvariablen über die jQuery-Funktion in einer JS-Datei? In diesem Code möchte ich "Wert" von einer Sitzungsvariablen abrufen

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

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

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

Dann deine Skriptdatei:

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

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

    // ... more javascript ...

Wenn diese bestimmte Methode keine Option ist, können Sie in Ihre Javascript-Datei eine Anforderung AJAX einfügen und die Daten als JSON vom serverseitigen Skript zurückgeben.

51
Erik

Ich hatte Probleme mit dem gleichen Problem und stolperte über diese Seite. Eine andere Lösung, die ich mir ausgedacht habe, wäre folgende:

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

In Ihren js können Sie mit jQuery darauf zugreifen: $("#sessionOrigin").text();

EDIT: oder noch besser, lege es in eine versteckte input 

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

11
Krimo

Wenn Sie eine klarere Trennung von PHP und JS beibehalten möchten (das Syntax-Highlighting und das Einchecken von IDEs wird vereinfacht), können Sie Jquery-Plugins für Ihren Code erstellen und $ _SESSION ['param'] als Variable übergeben .

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);
7
icc97

Sie können Ihre Sitzungsvariablen von Ihrem PHP-Skript über JSON wie JQUERY übergeben 

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['[email protected]'];

$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 
2
Mark

Sie können nicht auf PHP -Sitzungsvariablenwerte in JS zugreifen, eine ist serverseitig (PHP) und die andere Clientseite (JS).

Was Sie tun können, ist/- pass oder return den SESSION-Wert an Ihre JS, beispielsweise durch einen Aufruf von AJAX. Rufen Sie in Ihrer JS ein PHP - Skript auf, das einfach den Wert der SESSION-Variablen an Ihre JS zurückgibt, und dann Ihre JS verwenden, um diese zurückgegebenen Informationen zu verarbeiten.

Speichern Sie den Wert alternativ in einem COOKIE, auf den von beiden Frameworks aus zugegriffen werden kann. Dies ist jedoch möglicherweise nicht der beste Ansatz in Ihrer Situation.

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

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

Seltsamerweise direkt von $ _SESSION importieren funktioniert nicht, aber es muss dies tun, damit es funktioniert:

<?php
$phpVar = $_SESSION['var'];
?>

<script>
    var variableValue= '<?php echo $phpVar; ?>';
    var imported = document.createElement('script');
    imported.src = './your/path/to.js';
    document.head.appendChild(imported);
</script>

und in to.js

$(document).ready(function(){
alert(variableValue);
// rest of js file
0
Ardhi

Dies ist streng genommen nicht die Verwendung von jQuery, aber ich habe diese Methode als einfacher mit jQuery gefunden. Es gibt wahrscheinlich endlose Methoden, um dies zu erreichen, und viele clevere hier, aber nicht alle haben für mich gearbeitet. Die folgende Methode hat jedoch immer funktioniert und ich gebe sie weiter, falls sie jemandem hilft.

Es sind drei Javascript-Bibliotheken erforderlich, createCookie, readCookie und eraseCookie. Diese Bibliotheken gehören nicht mir, aber ich habe sie vor etwa 5 Jahren verwendet und kenne ihren Ursprung nicht.

createCookie = function(name, value, days) {
if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    var expires = "; expires=" + date.toGMTString();
}
else var expires = "";

document.cookie = name + "=" + value + expires + "; path=/";
}

readCookie = function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
eraseCookie = function (name) {
   createCookie(name, "", -1);
}

Um sie aufzurufen, müssen Sie eine kleine PHP - Funktion erstellen, normalerweise als Teil Ihrer Support-Bibliothek:

<?php
 function createjavaScriptCookie($sessionVarible) {
 $s =  "<script>";
 $s = $s.'createCookie('. '"'. $sessionVarible                 
 .'",'.'"'.$_SESSION[$sessionVarible].'"'. ',"1"'.')';
 $s = $s."</script>";
 echo $s;
}
?>

Um also alles zu verwenden, was Sie jetzt in Ihre index.php-Datei aufnehmen müssen, ist

$_SESSION["video_dir"] = "/video_dir/";
createjavaScriptCookie("video_dir");

Jetzt können Sie den Cookie in Ihrer Javascript-Bibliothek.js mit dem folgenden Code wiederherstellen:

var videoPath = readCookie("video_dir") +'/'+ video_ID + '.mp4';

Ich hoffe das hilft.

0
Alexander