2013-07-31 47 views
0

我有兩個文件......PHP,Javascript和url變量問題

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變量。
+0

只要定義你的 「行動」 屬性爲形式的行動= 「process.php」,使用的名字始終把PHP =輸入標籤中的「h_field」。所有名稱將自動轉換並作爲GET參數傳遞。你會得到$ _GET ['h_field'] –

+0

謝謝你做了詭計!!!!!! – codenamejupiterx

+0

我很高興它有幫助。快樂的編碼! –

回答

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> 
+0

表單聲明後移動主體部分?你一定是在開玩笑?你的意思是說移動腳本部分我確信 – DevZer0

+0

@ DevZer0變得更加明顯。謝謝。 – BlitZ

0

你隱藏的輸入需要name屬性

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

不過,它不能解決問題。 – BlitZ

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 null JavaScript代碼。

下面是一個完整的代碼

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> 

,並在你的灣PHP創建一個PHP標籤<?php ?>

當b.php

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