使用Javascript将PHP变量设置为HTML文本字段的值

时间:2013-12-23 16:40:44

标签: javascript php html

我正在学习Javascript和PHP,我正在尝试这样做, 我已经在PHP会话中存储了一些变量,我试图将会话中存在的值设置为表单输入字段中的值,我已经使用javascript来实现这一目的,

PHP:

<html>
<head>
    <link rel='stylesheet' type='text/css' href='http://localhost/Matrix/frameCSS.css' />
    <script lang='text/javascript' src='http://localhost/Matrix/gd.js'></script>
</head>
<body>
    <?php
        // ------- --------- -------- -------- ------
        $debug=true;
        dBug("Started Code Execution ... ");
        function dBug($text)
        {
            global $debug;
            if($debug) { echo "<p class='status'>debug : $text</p>"; }
            else { return; }
        }
        // ------ ----------- ------------ -----------
        $db = mysqli_connect("127.0.0.1","user","xyz","sample");
        if(mysqli_connect_errno())
        {
            die(mysqli_connect_error());
        }
        session_start();
        if($_SESSION['is_open']==true)
        {
            $username = $_SESSION['username'];
            dBug('retreived username > '.$username);
        }
    ?>

    <table class="content">
        <form method="POST" action="http://localhost/gen_det.php" onload="load_data()">
           <tr>
               <td>
                    Full Name : 
               </td>
               <td>
                    <input type="text" class="txtbox" id='name'/>
               </td>
           </tr>
           <tr>
               <td>
                    Age : 
               </td>
               <td>
                    <input type="text" class="txtbox" id='age' />
               </td>
           </tr>
           <tr>
                <td>
                    <p class='status' id='status'>&nbsp;</p>
                </td>
           </tr>
           <tr>
               <td colspan="2" align='center'> 
                    <input type="submit" class="btn" onclick="return validateData();" value="save" /> 
                    <input type="button" class="btn" onclick="redirect()" value="cancel" /> 
               </td>
           </tr>
        </form>
    </table>
</body>

Javascript:

function load_data()
{
 var name = document.getElementById('name');
 var age = document.getElementById('age'); 
 name.value = " <?php echo ''.$_SESSION['username']; ?> ";
 age.value = " <?php echo ''.$_SESSION['username']; ?> ";
}

此页面实际上位于另一个页面中的iframe内(如果这很重要)。当我打开此页面时,它会打开,但文本字段中的值不会填充。我做错了什么?

5 个答案:

答案 0 :(得分:2)

您的<form>代码无法拥有 onload 属性。这根本不可能。

尝试将 onload 事件分配给<body>元素:

<body onload="load_data();">

更好的解决方案是直接在JavaScript代码中注册事件:

window.addEventListener("load", load_data);

答案 1 :(得分:2)

首先,您错误地插入了PHP数据。您可以通过直接将任意PHP值转储到JS上下文中来轻松生成JS语法错误。您应该始终使用json_encode()来生成有效的JS文本:

name.value = <?php echo json_encode($_SESSION'username']); ?>;

json编码将处理任何必要的引用/转义。

您没有提及此JS如何包含在您的网站中。如果它在(比方说)外部.js文件中,那么默认情况下该文件不会通过PHP解释器传递,并且您将向浏览器发送原始未执行的PHP代码,JS将在其中看到它解析器并作为彻底的语法错误而被拒绝。这会杀死整个脚本块,你的JS代码就会在那里死掉。

如果它以某种方式被服务器解析/执行,那么你应该直接用你的浏览器点击那个JS脚本文件,看看输出的是什么。可能存在导致JS忽略整个脚本的其他结构问题。

答案 2 :(得分:2)

这是方法

<body onload="javascript: load_data('<?php echo $_SESSION['name']; ?>', '<?php echo $_SESSION['age']; ?>') >

在JS文件中,您可以定义函数

function load_data(param_name, param_age)
{
            var name = document.getElementById('name');
            var age = document.getElementById('age'); 
            name.value = param_name;
            age.value = param_age;
}

答案 3 :(得分:1)

如果您已经拥有PHP变量中的数据值,则可以使用已包含的值构建所需的input元素

<input type="hidden" id="foo" name="foo" value="<?php echo $_SESSION['foo']; ?>"/>

当你的事件(点击/提交)触发时,目标元素将包含值

foo = document.getElementById('foo');
console.log(foo.value);

答案 4 :(得分:1)

很简单,当网页加载时,加载顺序如下:

HTML-&GT; CSS-&GT; Javascript成为&GT; PHP

因此,如果你想在js文件中获取该变量,你必须这样做......

<html>
    <head>
        <link rel='stylesheet' type='text/css' href='http://localhost/Matrix/frameCSS.css' />
        <script lang='text/javascript' src='http://localhost/Matrix/gd.js'></script>
        <script>
            function load_data()
            {
                var name = document.getElementById('name');
                var age = document.getElementById('age'); 
                name.value = "<?php echo ''.$_SESSION['username']; ?>";
                age.value = "<?php echo ''.$_SESSION['username']; ?>";
            }
        </script>
    </head>
    <body>
        ...
    </body>
</html>