Подтвердить что ты не робот

Как получить доступ к переменным сеанса PHP из функции jQuery в файле .js?

Как получить доступ к переменным сеанса PHP из функции jQuery в файле .js? В этом коде я хочу получить "значение" из переменной сеанса

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

Ответ 1

Вы можете создать файл javascript через PHP. Ничто не говорит, что файл javascript должен иметь расширение .js. Например, в вашем HTML:

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

Затем ваш файл script:

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

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

    // ... more javascript ...

Если этот конкретный метод не является вариантом, вы можете поместить запрос AJAX в свой файл javascript и вернуть данные в виде JSON со стороны сервера script.

Ответ 2

Я боролся с той же проблемой и наткнулся на эту страницу. Другое решение, которое я придумал, будет следующим:

В вашем html, эхо переменную сеанса (мой здесь $_SESSION['origin']), любой элемент по вашему выбору: <p id="sessionOrigin"><?=$_SESSION['origin'];?></p>

В js, используя jQuery, вы можете получить к нему доступ так: $("#sessionOrigin").text();

EDIT: или даже лучше, поместите его в скрытый input

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

Ответ 3

Если вы хотите поддерживать более четкое разделение PHP и JS (упрощает подсветку синтаксиса и проверку IDE), вы можете создать jquery-плагины для своего кода, а затем передать $_SESSION ['param'] в качестве переменной.

Итак, в файле page.php:

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

Затем в файле my_progress_bar.js:

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

Ответ 4

Вы можете передать переменные сеанса из вашего php script в JQUERY с помощью JSON, например

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 

Ответ 5

Вы не можете получить доступ к переменным/значениям сеанса PHP в JS, один из них - серверная (PHP), другая клиентская сторона (JS).

Что вы можете сделать, это передать или вернуть значение SESSION вашему JS, например, вызовом AJAX. В своем JS сделайте вызов PHP script, который просто выводит для возврата в JS значение переменной SESSION, затем используйте JS для обработки возвращенной информации.

Альтернативно хранить значение в COOKIE, к которому можно получить доступ любой из фреймворков. Хотя это может быть не лучший подход в вашей ситуации.

ИЛИ вы можете сгенерировать некоторый JS в вашем PHP, который возвращает/устанавливает переменную, т.е.:

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

Ответ 6

Это строго не означает использование jQuery, но я нашел этот метод проще, чем использование jQuery. Есть, вероятно, бесконечные методы достижения этого и многих умных здесь, но не все работали для меня. Однако следующий метод всегда работал, и я передаю его, если он помогает кому-то другому.

Требуются три библиотеки javascript, createCookie, readCookie и eraseCookie. Эти библиотеки не мои, но я начал использовать их около 5 лет назад и не знаю их происхождения.

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

Чтобы вызвать их, вам нужно создать небольшую функцию PHP, обычно как часть вашей библиотеки поддержки, следующим образом:

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

Итак, чтобы использовать все, что вам нужно включить в файл index.php,

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

Теперь в javascript library.js вы можете восстановить файл cookie с помощью следующего кода:

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

Надеюсь, это поможет.

Ответ 7

Странный импорт напрямую из $_SESSION не работает, но должен сделать это, чтобы заставить его работать:

<?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>

и в to.js

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