Хотя новичок в javascript, мне нужно взять переменную javascript (массив), отражающую то, что пользователь сделал на стороне клиента, и отправить его на страницу сервера PHP на submit.PHP/Javascript post js variable to php page
Было предложено включить это как значение в скрытое поле в форме для публикации на php-страницу. Однако, поскольку переменная JS динамически создается пользователем, я не могу писать на страницу для включения в форму, если я не вызываю функцию, которая обновляет страницу. Чтобы избежать обновления с двумя страницами, я бы предпочел, чтобы функция отправки одновременно захватила данные и одновременно отправила их в скрипт php. AJAX, если я правильно понимаю, не нужно, потому что я нормально перезагружаю страницу один раз на submit. Я просто не хочу перезагружать дважды.
Следующая функция, предложенная Андреем для установки переменной 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
Согласовано ... JS поместит ваше значение в это поле формы, после чего вы разместите форму. – GDP
Если переменная js называется var, каков будет синтаксис html? Что-то вроде?
Вы можете пойти дальше и создать форму, как вы это обычно с пустым скрытым полем:
И вы можете использовать функцию JavaScript для установки значения скрытого поля:
Вы можете вызвать функцию setTheValue (val), когда ваша кнопка нажата или что-то еще. Надеюсь, это поможет!
источник
2012-04-27 18:19:21 Andrew
Тупой вопрос, но каков синтаксис для вызова функции? что-то вроде или я должен использовать user1260310
Вы можете используйте ' ' – Andrew
Это работало для вас? – Andrew
jQuery на самом деле делает это очень простым. У вас есть правильная идея, но использование window.location изменит вашу страницу. То, что вы хотите сделать, это сделать запрос асинхронного запроса на другой URL-адрес, пока вы остаетесь на текущей странице.
http://api.jquery.com/jQuery.ajax/
источник
2012-04-27 18:22:58
Я бы второй jQuery. Это облегчает жизнь, когда вы работаете с JavaScript. – Andrew