0

我正在尝试使用 javascript 将存储在 PHP $_SESSION 变量中的值注入到输入标记的“值”属性中。我能够在“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'].

有什么我想念的吗?这不应该工作吗?任何帮助表示赞赏!

在此处输入图像描述

4

3 回答 3

1

Php 代码在请求时被解释,因此就浏览器/javascript 而言,您必须将“注入”的代码作为一个简单的字符串来处理。

你可以这样做,使用一个返回会话变量值的回调:

$('#someButton').click(function() {
     $.ajax({
           type: 'POST',
           url: <callbackUrl>,
           data: <params if any>
           }).done(function( msg ) {
                fields.eq(n).attr('value', msg);
                });
});
于 2012-12-04T07:08:38.120 回答
1

PHP 是服务器端脚本,这意味着: PHP 将在服务器上执行。

JavaScript 是客户端脚本,这意味着: JavaScript 将由浏览器执行。

通常默认情况下,.php文件将由服务器上的 PHP 引擎处理,从而执行 PHP 脚本。结果将发送给客户端。这就是为什么当你有一个.php文件时,PHP 引擎会处理它们之间的事情,<?php?>你不会在客户端中看到实际的 PHP 脚本。有时您可以配置 HTTP 服务器,以便.htmlPHP 引擎也处理文件。

对于其他文件,HTTP服务器(例如Apache)会直接将整个文件发送给客户端,不经过PHP引擎的处理,这样任何PHP脚本都不会被处理,直接发送给客户端。

现在您的问题是您试图将一些 PHP 放入一个 JavaScript 文件 ( .js) 中,并希望它会被执行,但实际上它不会。因此,当您尝试使用显示的 JavaScript 设置输入元素的值时,<?php echo $_SESSION['fname'] ; ?>将设置“文本”。

如果您将 JavaScript放入.php文件中,或者将 JavaScript 文件 ( *.js) 重命名为*.php,您将获得所需的值。

或者您可能可以在您的页面中添加一个额外的 JavaScript,使用您的 PHP 设置一个“全局”变量,然后在您的.js文件中使用该“全局变量”。
IEwindow.myFname = <?php echo $_SESSION['fname'] ; ?>;


根据您想要做什么,您可能需要选择如何设计。如果您只是想设置值,您可以只执行我提供的两个建议之一。如果您想动态获取值(即在需要时获取值),您会像其他人建议的那样使用 AJAX。

于 2012-12-04T07:25:45.000 回答
0

假设您已经包含了jQuery库。

获取用户.php

<?php echo $_SESSION['fname']; ?>

对于您的JavaScript

$(document).ready(function(){
    $.get("getUser.php", function(data) {
      fields.eq(n).attr('value', data);
    });
});

供参考,http://api.jquery.com/jQuery.get/

于 2012-12-04T07:15:23.300 回答