Come accedere alle variabili di sessione PHP dalla funzione jQuery in un file .js?

Come accedere alle variabili di sessione PHP dalla funzione jQuery in un file .js? In questo codice, voglio ottenere “valore” da una variabile di sessione

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

Puoi produrre il file javascript via PHP. Nulla dice che un file javascript deve avere estensione .js. Ad esempio nel tuo codice HTML:

  

Quindi il tuo file di script:

  $(function() { $( "#progressbar" ).progressbar({ value:  }); // ... more javascript ... 

Se questo particolare metodo non è un’opzione, puoi inserire una richiesta AJAX nel tuo file javascript e avere i dati restituiti come JSON dallo script lato server.

Stavo lottando con lo stesso problema e sono incappato in questa pagina. Un’altra soluzione che ho trovato sarebbe questa:

Nel tuo html, echo la variabile di sessione (il mio qui è $_SESSION['origin'] ) per qualsiasi elemento di tua scelta:

Nel tuo js, ​​usando jQuery puoi accedervi in ​​questo modo: $("#sessionOrigin").text();

EDIT: o ancora meglio, mettilo in un input nascosto

Se si desidera mantenere una separazione più chiara tra PHP e JS (facilita l’evidenziazione della syntax e il controllo degli IDE), è ansible creare plug-in jquery per il codice e quindi passare $ _SESSION [‘param’] come variabile.

Quindi in page.php:

   

Quindi in my_progress_bar.js:

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

Puoi passare le tue variabili di sessione dal tuo script php a JQUERY usando JSON come

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 = ""; se = ""; ce = ""; 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 

Non puoi accedere a variabili / valori di sessione PHP in JS, uno è lato server (PHP), l’altro lato client (JS).

Quello che puoi fare è passare o restituire il valore SESSION al tuo JS, per esempio, una chiamata AJAX. Nel tuo JS, effettua una chiamata a uno script PHP che emette semplicemente per restituire il valore della variabile SESSION al tuo JS, quindi usa il tuo JS per gestire queste informazioni restituite.

In alternativa, memorizza il valore in un COOKIE, a cui è ansible accedere da entrambi i framework … anche se questo potrebbe non essere l’approccio migliore nella tua situazione.

O puoi generare qualche JS nel tuo PHP che ritorna / imposta la variabile, cioè:

  alert('".json_encode($_SESSION['msg'])."'); "; ?> 

Questo non è strettamente parlando usando jQuery, ma ho trovato questo metodo più facile che usare jQuery. Ci sono probabilmente infiniti metodi per raggiungere questo e molti intelligenti qui, ma non tutti hanno funzionato per me. Tuttavia il metodo seguente ha sempre funzionato e lo sto superando nel caso in cui aiuti qualcun altro.

Sono necessarie tre librerie javascript, createCookie , readCookie e eraseCookie . Queste librerie non sono mie ma ho iniziato a usarle circa 5 anni fa e non conosco la loro origine.

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

Per chiamarli è necessario creare una piccola funzione PHP, normalmente come parte della libreria di supporto, come segue:

 "; $s = $s.'createCookie('. '"'. $sessionVarible .'",'.'"'.$_SESSION[$sessionVarible].'"'. ',"1"'.')'; $s = $s.""; echo $s; } ?> 

Quindi, per utilizzare tutto ciò che ora devi includere nel tuo file index.php lo è

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

Ora nel tuo javascript library.js puoi recuperare il cookie con il seguente codice:

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

Spero che aiuti.

Stranamente importando direttamente da $ _SESSION non funziona, ma devi farlo per farlo funzionare:

   

e in to.js

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