PHP,Javascript和url变量问题

时间:2013-07-31 02:38:29

标签: php javascript

我有两个文件......

a.php只会

<html>
<head>
<script>
    var randomnumber=new Array(); 

for(var i=1; i<=10; i++)
{
   randomnumber[i]=Math.random();
}

document.getElementById("h_field").value = randomnumber[1];

</script>
</head>
<body>

    <form id="myform" action="process.php?var1=h_field"  method="GET" >
    <input type="hidden" id ="h_field">
    <input type="Submit" value="my button">
</form>

</body>
</html>

b.php

<?
echo $_GET['var1'];
?>

我打算做的是使用JavaScript创建一个随机数组。 然后将此数组的第一个元素放在id为h_field的隐藏字段中。 然后创建一个url变量并将隐藏字段的值赋给该变量。最后$_GET,然后使用将处理表单的页面将其打印到屏幕上。

问题

  1. 结果只是一个白页。
  2. 我无法在处理页面的地址栏中看到url变量。

3 个答案:

答案 0 :(得分:0)

您的隐藏输入需要name属性

<input type="hidden" id ="h_field" name="h_field" />

答案 1 :(得分:0)

当您的脚本位于<head></head>部分时,它会在加载<body></body>部分之前立即执行:<input type="hidden" id ="h_field">此时可能甚至不存在。

  1. <script></script>声明后将<body></body>部分移至<form></form>部分。
  2. 其他方式是将脚本转换为函数,并将其指定为window.onload的事件处理程序。
  3. 如果您要将值提交给服务器,则应该在输入字段中提供name属性,如 @ DevZer0 所述。
  4. 修正脚本:

    <html>
    
    <head>
    <script>
    function init(){
        var randomnumber = []; 
    
        for(var i=1; i<=10; i++)
        {
            randomnumber[i] = Math.random();
        }
    
        document.getElementById("h_field").value = randomnumber[1];
    }
    
    window.onload = init;
    </script>
    </head>
    
    <body>
    
    <form id="myform" action="process.php?var1=h_field"  method="GET" >
        <input type="hidden" name="h_field" id="h_field">
        <input type="Submit" value="my button">
    </form>
    
    </body>
    </html>
    

答案 2 :(得分:0)

为什么要创建一个新变量。 GET会自动将表单内的所有输入添加为GET变量。所以你可以像这样使用它

<form id="myform" action="b.php"  method="GET" >
    <input type="hidden" id ="h_field" name="h_field">
    <input type="Submit" value="my button">
</form>

您可以从h_field获取值,如:$_GET['h_field'];

您的javascript代码也会在加载html之前运行,因此您的javascript代码会出现错误Cannot set property 'value' of null

这是一个完整的代码

a.php只会

<html>
<head>
<script> 

function LoadArray(){
    var randomnumber=new Array(); 

    for(var i=0; i<=10; i++)
    {
       randomnumber[i]=Math.random(); 
    } 
    document.getElementById("h_field").value = randomnumber[0];
}
 window.onload = LoadArray;
</script>
</head>
<body> 
    <form id="myform" action="b.php"  method="GET" >
        <input type="hidden" id ="h_field" name="h_field">
        <input type="Submit" value="my button">
    </form>

</body>
</html>

并且在你的 b.php 上总是在创建php标签时使用php <?php ?>

b.php

<?php
echo $_GET['h_field'];
?>