Intereting Posts
Сгладить многомерный ассоциативный массив к одному одномерному массиву ссылок в PHP Найти комбинации, соответствующие критериям дальности php string в формате даты, добавьте 12 часов Безопасное соединение Propel, удаленный MySQL Правильное выполнение оболочки в PHP Запуск запроса wordpress каждую неделю Как найти список всех зарегистрированных пользователей в CakePHP 2.x? Количество запросов MySQL, выполняемых на странице формат XML-строки Встраивание видео в YouTube «Отказано от отображения документа, потому что отображение запрещено с помощью X-Frame-Options» взорвать ошибку \ r \ n и \ n в windows и linux server PHP flock () не блокирует блокирование почему? Возможно ли, что mysqli_insert_id вернет неверный идентификатор в приложениях с высоким трафиком? Как переназначить столбец AUTO_INCREMENT для каждой строки в таблице MySQL с помощью PHP PHP Не разрешать объекту создавать экземпляр более одного раза

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

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

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

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

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

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

Тогда ваш файл сценария:

 <?php header("Content-type: application/javascript"); ?> $(function() { $( "#progressbar" ).progressbar({ value: <?php echo $_SESSION['value'] ?> }); // ... more javascript ... 

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

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

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

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

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

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

Если вы хотите поддерживать более четкое разделение 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> в <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); 

Вы можете передать переменные сеанса из вашего PHP-скрипта в 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['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 

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

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

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

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

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

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

createCookie три библиотеки 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'; 

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

Странный импорт напрямую из $ _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