0

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

一个.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 变量。
4

3 回答 3

0

您的隐藏输入需要一个name属性

<input type="hidden" id ="h_field" name="h_field" />
于 2013-07-31T02:40:14.860 回答
0

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

  1. <script></script>部分移动到声明<body></body>后的部分<form></form>
  2. 另一种方法是将脚本转换为函数并将其分配为window.onload.
  3. 如果您想将您的值提交给服务器,您应该name为输入字段提供属性,如@DevZer0所述。

固定脚本:

<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>
于 2013-07-31T03:11:03.780 回答
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 之前运行,因此您的Cannot set property 'value' of nulljavascript 代码会出现错误。

这是一个完整的代码

一个.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'];
?>
于 2013-07-31T04:06:50.130 回答