Я хочу передать переменные JavaScript в PHP, используя скрытый ввод в форме.
Но я не могу получить значение $_POST['hidden1'] в $salarieid. Что я делаю не так?
Вот код:
<script type="text/javascript">
// Просмотр того, что выбрал пользователь
function func_load3(name) {
var oForm = document.forms["myform"];
var oSelectBox = oForm.select3;
var iChoice = oSelectBox.selectedIndex;
var sa = oSelectBox.options[iChoice].text;
document.getElementById("hidden1").value = sa;
}
</script>
<form name="myform" action="<?php echo $_SERVER['$PHP_SELF']; ?>" method="POST">
<input type="hidden" name="hidden1" id="hidden1" />
</form>
<?php
$salarieid = $_POST['hidden1'];
$query = "select * from salarie where salarieid = ".$salarieid;
echo $query;
$result = mysql_query($query);
?>
<table>
Код для отображения результата запроса.
</table>
Ответ 1
Вы не можете передавать значения переменных из кода JavaScript текущей страницы в код PHP текущей страницы. Код PHP выполняется на стороне сервера, и он ничего не знает о том, что происходит на стороне клиента.
Вам необходимо передать переменные в PHP-код из HTML-формы, используя другой механизм, например, отправив форму с помощью методов GET или POST.
<DOCTYPE html>
<html>
<head>
<title>My Test Form</title>
</head>
<body>
<form method="POST">
<p>Пожалуйста, выберите идентификатор зарплаты для получения результата:</p>
<p>
<label for="salarieids">SalarieID:</label>
<?php
$query = "SELECT * FROM salarie";
$result = mysql_query($query);
if ($result) :
?>
<select id="salarieids" name="salarieid">
<?php
while ($row = mysql_fetch_assoc($result)) {
echo '<option value="', $row['salaried'], '">', $row['salaried'], '</option>'; //between <option></option>вы можете вывести что-то более удобное для человека (наподобие $row['name'], если таблица "зарплата" есть)
}
?>
</select>
<?php endif ?>
</p>
<p>
<input type="submit" value="Sumbit my choice"/>
</p>
</form>
<?php if isset($_POST['salaried']) : ?>
<?php
$query = "SELECT * FROM salarie WHERE salarieid = " . $_POST['salarieid'];
$result = mysql_query($query);
if ($result) :
?>
<table>
<?php
while ($row = mysql_fetch_assoc($result)) {
echo '<tr>';
echo '<td>', $row['salaried'], '</td><td>', $row['бла-бла-бла'], '</td>' ...;
echo '</tr>';
}
?>
</table>
<?php endif?>
<?php endif ?>
</body>
</html>
Ответ 2
Просто сохраните их в куки:
$(document).ready(function () {
createCookie("height", $(window).height(), "10");
});
function createCookie(name, value, days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
}
else {
expires = "";
}
document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
}
А затем прочтите их с помощью PHP:
<?PHP
$_COOKIE["height"];
?>
Это не очень хорошее решение, но оно работает.
Ответ 3
Есть несколько способов передать переменные из JavaScript в PHP (конечно, не на текущую страницу).
Варианты:
Отправьте информацию в форме, указанной здесь (приведет к обновлению страницы);
Передайте его в Ajax (без обновления страницы);
Сделайте HTTP-запрос через запрос XMLHttpRequest (без обновления страницы) следующим образом:
if (window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
} else{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var PageToSendTo = "nowitworks.php?";
var MyVariable = "variableData";
var VariablePlaceholder = "variableName=";
var UrlToSend = PageToSendTo + VariablePlaceholder + MyVariable;
xmlhttp.open("GET", UrlToSend, false);
xmlhttp.send();
Ответ 4
Вот как я это сделал (мне нужно было вставить местный часовой пояс в PHP):
<?php
ob_start();
?>
<script type="text/javascript">
var d = new Date();
document.write(d.getTimezoneOffset());
</script>
<?php
$offset = ob_get_clean();
print_r($offset);
Web