如何从 .js 文件中的 jQuery 函数访问 PHP 会话变量?在这段代码中,我想从会话变量中获取“值”
$(function() {
$("#progressbar").progressbar({
value: 37
});
});
如何从 .js 文件中的 jQuery 函数访问 PHP 会话变量?在这段代码中,我想从会话变量中获取“值”
$(function() {
$("#progressbar").progressbar({
value: 37
});
});
您可以通过 PHP 生成 javascript 文件。没有说 javascript 文件必须具有 .js 扩展名。例如在您的 HTML 中:
<script src='javascript.php'></script>
然后你的脚本文件:
<?php header("Content-type: application/javascript"); ?>
$(function() {
$( "#progressbar" ).progressbar({
value: <?php echo $_SESSION['value'] ?>
});
// ... more javascript ...
如果此特定方法不是一个选项,您可以在您的 javascript 文件中放置一个 AJAX 请求,并将数据作为 JSON 从服务器端脚本返回。
我在同样的问题上苦苦挣扎,偶然发现了这个页面。我想出的另一个解决方案是:
在您的 html 中,将会话变量(我的这里是$_SESSION['origin']
)回显到您选择的任何元素:
<p id="sessionOrigin"><?=$_SESSION['origin'];?></p>
在您的 js 中,使用 jQuery 您可以像这样访问它:
$("#sessionOrigin").text();
编辑:或者甚至更好,把它放在一个隐藏的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>
然后在 my_progress_bar.js 中:
(function ($) {
$.my_progress_bar = function(percent) {
$( "#progressbar" ).progressbar({
value: percent
});
};
})(jQuery);
您可以使用 JSON 将会话变量从 php 脚本传递给 JQUERY,例如
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
您无法在 JS 中访问 PHP 会话变量/值,一个是服务器端 (PHP),另一个是客户端 (JS)。
您可以做的是将SESSION 值传递或返回给您的 JS,例如 AJAX 调用。在您的 JS 中,调用一个 PHP 脚本,该脚本简单地将 SESSION 变量的值输出并返回给您的 JS,然后使用您的 JS 来处理此返回的信息。
或者将值存储在一个 COOKIE 中,它可以被任一框架访问......尽管这可能不是您的情况的最佳方法。
或者你可以在你的 PHP 中生成一些返回/设置变量的 JS,即:
<? php
echo "<script type='text/javascript'>
alert('".json_encode($_SESSION['msg'])."');
</script>";
?>