[英]PHP/Javascript post js variable to php page
雖然是javascript的新手,但我需要獲取反映用戶在客戶端執行的操作的javascript變量(數組),並在提交時將其發布到PHP服務器頁面。
建議將其作為值添加到表單的隱藏字段中,以發布到php頁面。 但是,由於JS變量是由用戶動態創建的,因此除非調用調用刷新頁面的函數,否則無法寫入頁面以使其包含在表單中。 為了避免刷新頁面,我更希望使用Submit函數同時獲取數據並將其同時發布到php腳本中。 如果我理解正確,則不需要AJAX,因為我可以在提交后重新加載頁面。 我只是不想重新加載兩次。
以下使用安德魯建議的功能來設置js變量和post。 當我獲取表單中的其他隱藏變量時,表單發布了該表單,但是我沒有獲取js設置的變量,這可能是因為變量的命名有誤。
<html>
<head>
<style type="text/css">
select
{
width:100px;
}
</style>
<script type="text/Javascript">
function moveToRightOrLeft(side)
{
if (side == 1)
{
var list1 = document.getElementById('selectLeft');
var list2 = document.getElementById('selectRight');
}
else
{
var list1 = document.getElementById('selectRight');
var list2 = document.getElementById('selectLeft');
}
if (list1.options.length == 0)
{
alert('The list is empty');
return false;
}
else
{
var selectedItem = list1.options[list1.selectedIndex];
move(list2, selectedItem.value, selectedItem.text);
list1.remove(list1.selectedIndex);
if (list1.options.length > 0)
list1.options[0].selected = true;
}
return true;
}
function move(listBoxTo, optionValue, optionDisplayText)
{
var newOption = document.createElement("option");
newOption.value = optionValue;
newOption.text = optionDisplayText;
listBoxTo.add(newOption, null);
return true;
}
function postData(listBoxID)
{
var options = document.getElementById(listBoxID).options;
for (var i = 0; i < options.length; i++)
window.location = "posttoserver.php?data="+options[i].value;
}
function setTheValue(val) {
var options = document.getElementById(listBoxID).options;
var form = document.forms['myForm'];
hiddenField = oFormObject.elements["data"];
hiddenField.value = "val";
}
</script>
</head>
<body>
<select id="selectLeft" multiple="multiple">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
<option value="3">Value 3</option>
</select>
<button onclick="moveToRightOrLeft(2)"><</button>
<button onclick="moveToRightOrLeft(1)">></button>
<select id="selectRight" multiple="multiple">
</select>
<form id="myForm" action="getdata.php" method="get">
<input type="hidden" name="data" />
<input type="hidden" name="mode" value="savedit">
<button onclick="setTheValue(options)">Submit Data</button>
</form>
</body>
</html>
另一方面,我在getdata.php中:
<?php
$mode = $_REQUEST['mode'];
$option = $_REQUEST['data'];
echo $mode;
echo $option;
print_r ($option);;
?>
幾天后終於用document.getElementById('varname')。value解決了。對於像我這樣的新手來說,document.getElementById不僅會像您想象的那樣檢索數據,而且大多數文檔都提到了這一點。 它還設置數據。
關鍵是向后寫入語句,並且(必須執行檢索值)將id ==放入要設置的元素中。
如果您編寫var test = document.getElementById('text'); 並將id =“ text”放在某個字段中,它將檢索text的值。 這就是通常的文檔所提到的。 但是,如果您寫:
document.getElementById('varname')。value =“ dog”它將在包含id = varname的元素中插入“ dog”。
盡管這對於更有經驗的人可能是顯而易見的,但它的確使我感到困惑。
以下代碼有效。
<html>
<head>
<script>
function Post(data)
{
document.getElementById('varname').value = data
}
</script>
</head>
<body>
<form action = "" method="get">
<input id="varname" type="hidden" name="d">
<button onclick="Post('dog')">Post to Server</button>
</form>
</body>
</html>
您可以像平常一樣使用空的隱藏字段創建表單:
<form id="myForm" action="posttoserver.php" method="get">
<input type="hidden" name="data" />
...
<input type="submit" value="Submit" />
</form>
您可以使用JavaScript函數設置隱藏字段的值:
function setTheValue(val) {
var form = document.forms['myForm'];
hiddenField = oFormObject.elements["data"];
hiddenField.value = "val";
}
然后,您可以在單擊按鈕等時調用函數setTheValue(val)。 我希望這有幫助!
jQuery實際上使這一過程非常簡單。 您有正確的主意,但使用window.location將更改您的頁面。 您要做的是在您停留在當前頁面上的同時,向另一個網址發出異步請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.