1
尽管JavaScript是一个新手,但我需要将JavaScript变量(数组)反映为用户在客户端完成的操作,并在提交时将其发布到PHP服务器页面。PHP/Javascript发布js变量到php页面
有人建议我将这个值作为隐藏字段中的一个值加入到php页面中。但是,由于JS变量是由用户动态创建的,因此除非我调用刷新页面的函数,否则我无法写入页面以包含在表单中。为了避免双页面刷新,我宁愿让submit函数抓取数据并同时将其发布到php脚本中。 AJAX如果我理解正确,不应该需要,因为我没关系重新加载页面一次提交。我只是不想重新加载两次。
以下使用Andrew建议的函数来设置js变量和后期。 Th表单的帖子,因为我得到了表单中的其他隐藏变量,但我没有得到由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);;
?>
您不应该刷新页面来更改隐藏字段的值。 – Andrew 2012-04-27 17:29:51
同意...... JS会将您的价值放入该表单字段中,届时您将发布该表单。 – GDP 2012-04-27 17:41:18
如果js变量被命名为var,那么html语法是什么?类似于?
您可以继续正常创建像你这样的形式将被空隐藏字段:
并且您可以使用JavaScript函数来设置隐藏字段的值:
然后,您可以在单击按钮或其他任何按钮时调用setTheValue(val)函数。 我希望这有助于!
来源
2012-04-27 18:19:21 Andrew
愚蠢的问题,但是调用函数的语法是什么?像或者我应该使用 user1260310 2012-04-27 18:42:20
您可以使用'' – Andrew 2012-04-27 18:53:55
这个工作适合你吗? – Andrew 2012-04-27 20:03:48
jQuery实际上使这非常简单。你有正确的想法,但使用window.location将会改变你的页面。您要做的是在您保留在当前页面上时向另一个网址发出异步请求。
http://api.jquery.com/jQuery.ajax/
来源
2012-04-27 18:22:58
我会第二个jQuery。当您使用JavaScript时,它使生活更容易。 – Andrew 2012-04-27 18:24:52