我正在尝试使用javascript将存储在PHP $ _SESSION变量中的值注入到输入标记的“value”属性中。我能够在“value”属性中成功注入PHP代码,但存储的值不会出现在文本框中。我的代码如下:
HTML:
<input type="text" name="fname" value="" />
使用Javascript:
fields.eq(n).attr('value', "<?php echo $_SESSION['fname'] ; ?>");
问题是 通常 将$_SESSION['fname']
变量的值放在输入框中。但那是不的情况。单击该按钮将PHP代码注入value属性时,这就是HTML的样子:
<input type="text" name="fname" value="<?php echo $_SESSION['fname'] ; ?>" />
这就是我想要的样子,但在文本框中,它实际上显示的是PHP代码,而不是$_SESSION['fname']
中存储的值。
我有什么遗失的吗?这不应该工作吗?任何帮助表示赞赏!
答案 0 :(得分:1)
Php代码在请求时被解释,因此就浏览器/ javascript而言,您必须将“注入”的代码视为一个简单的字符串。
你可以这样做,使用一个返回会话var:
的calue的回调$('#someButton').click(function() {
$.ajax({
type: 'POST',
url: <callbackUrl>,
data: <params if any>
}).done(function( msg ) {
fields.eq(n).attr('value', msg);
});
});
答案 1 :(得分:1)
PHP是服务器端脚本,这意味着:PHP将在服务器上执行。
JavaScript是一个客户端脚本,这意味着:JavaScript将由浏览器执行。
通常默认情况下,.php
文件将由服务器上的PHP引擎处理,从而执行PHP脚本。结果将发送给客户端。这就是为什么当你有.php
文件时,<?php
和?>
之间的事情将由PHP引擎处理,你不会看到中的实际PHP脚本客户端。有时您可以配置HTTP服务器,以便PHP引擎也处理.html
文件。
对于其他文件,HTTP服务器(例如Apache)将直接将整个文件发送到客户端,而不由PHP引擎处理,因此任何PHP脚本都将不进行处理,并且直接去客户端。
现在您的问题是您尝试将一些PHP放入JavaScript文件(.js
),并希望它将被执行,但事实上它将不。因此,当您尝试使用显示的JavaScript设置input元素的值时,将设置“text”<?php echo $_SESSION['fname'] ; ?>
。
如果您将JavaScript 放入您的.php
文件,或将您的JavaScript文件(*.js
)重命名为*.php
,您将获得价值期望的。
或者您可以在页面中添加额外的JavaScript,使用PHP设置“全局”变量,并在.js
文件中使用该“全局变量”。
即window.myFname = <?php echo $_SESSION['fname'] ; ?>;
根据您的要求,您可能需要选择如何设计。如果您只想设置值,您可以只执行我提供的两个建议中的一个。如果你想动态获取值 (即在需要时获取值),你会像其他人一样建议使用AJAX。
答案 2 :(得分:0)
假设您已包含jQuery库。
<强> getUser.php 强>
<?php echo $_SESSION['fname']; ?>
对于 JavaScript ,
$(document).ready(function(){
$.get("getUser.php", function(data) {
fields.eq(n).attr('value', data);
});
});