Как передать переменные JavaScript в PHP?
Я хочу передать переменные JavaScript в PHP, используя скрытый ввод в форме.
Но я не могу получить значение $_POST['hidden1']
в $salarieid
. Здесь что-то не так?
Вот код:
<script type="text/javascript">
// view which the user has chosen
function func_load3(name){
var oForm = document.forms["myform"];
var oSelectBox = oForm.select3;
var iChoice = oSelectBox.selectedIndex;
//alert("you have choosen: " + oSelectBox.options[iChoice].text );
//document.write(oSelectBox.options[iChoice].text);
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>
code for display the query result.
</table>
Ответы
Ответ 1
Вы не можете передавать значения переменных с текущей страницы javascript на текущую страницу PHP-кода... PHP-код работает на стороне сервера, и он ничего не знает о том, что происходит на стороне клиента.
Вам нужно передать переменные в PHP-код из html-формы, используя другой механизм, например, отправить форму в методах GET или POST.
<DOCTYPE html>
<html>
<head>
<title>My Test Form</title>
</head>
<body>
<form method="POST">
<p>Please, choose the salary id to proceed result:</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> tags you can output something more human-friendly (like $row['name'], if table "salaried" have one)
}
?>
</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['bla-bla-bla'], '</td>' ...; // and others
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
Вот пример работы: Получить значение переменной javascript на той же странице в php.
<script>
var p1 = "success";
</script>
<?php
echo "<script>document.writeln(p1);</script>";
?>
Ответ 5
PHP запускается на сервере до того, как страница будет отправлена пользователю, JavaScript запускается на пользовательском компьютере после его получения, поэтому PHP script уже выполнен.
Если вы хотите передать значение JavaScript в PHP script, вам нужно будет выполнить XMLHttpRequest, чтобы отправить данные обратно на сервер.
Вот предыдущий вопрос, который вы можете получить за дополнительной информацией: Ajax Tutorial
Теперь, если вам просто нужно передать значение формы на сервер, вы также можете просто сделать обычную запись в форме, которая делает то же самое, но вся страница должна быть обновлена.
<?php
if(isset($_POST))
{
print_r($_POST);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="data" value="1" />
<input type="submit" value="Submit" />
</form>
Нажав кнопку "Отправить", вы отправите страницу и распечатайте представленные данные.
Ответ 6
Я пытался понять это сам, а затем понял, что проблема в том, что это своего рода обратный взгляд на ситуацию. Вместо того, чтобы пытаться передавать вещи из JavaScript в php, возможно, в большинстве случаев лучше пойти другим путем. PHP-код выполняется на сервере и создает HTML-код (и, возможно, также Java-скрипт). Затем браузер загружает страницу и выполняет сценарии html и java.
Кажется, что разумный способ приблизиться к подобным ситуациям - использовать PHP для создания необходимого JavaScript и HTML, а затем использовать JavaScript на странице, чтобы сделать то, что PHP не может сделать. Похоже, что это даст вам преимущества как PHP, так и JavaScript довольно простым и понятным способом.
Одна вещь, которую я сделал, которая создает видимость передачи вещей в PHP с вашей страницы на лету, - это использование html image tag для вызова PHP-кода. Что-то вроде этого:
<img src="pic.php">
PHP-код в pic.php фактически создает HTML-код еще до того, как ваша веб-страница была загружена, но этот HTML-код в основном вызывается на лету. Здесь можно использовать php-код для создания изображения на вашей странице, но в нем могут быть любые понравившиеся вам команды, кроме этой. Может быть, это меняет содержимое некоторых файлов на вашем сервере и т.д. Преимуществом этого является то, что код PHP может быть выполнен из HTML, и я предполагаю, JavaScript, но недостатком является то, что единственный вывод, который он может поместить на вашу страницу, это образ. У вас также есть возможность передачи переменных в код php через параметры в URL. Счетчики страниц будут использовать эту технику во многих случаях.
Ответ 7
Мы можем легко передавать значения даже на одинаковых/разных страницах, используя файлы cookie, показанные в коде, следующим образом (в моем случае я использую его с интеграцией с Facebook) -
function statusChangeCallback(response) {
console.log('statusChangeCallback');
if (response.status === 'connected') {
// Logged into your app and Facebook.
FB.api('/me?fields=id,first_name,last_name,email', function (result) {
document.cookie = "fbdata = " + result.id + "," + result.first_name + "," + result.last_name + "," + result.email;
console.log(document.cookie);
});
}
}
И я получил к нему доступ (в любом файле) с помощью -
<?php
if(isset($_COOKIE['fbdata'])) {
echo "welcome ".$_COOKIE['fbdata'];
}
?>
Ответ 8
Вот как я это сделал (нужно вставить локальный часовой пояс в 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);
Ответ 9
Является ли ваша функция, которая задает значение скрытой формы, вызывается? Это не в этом примере. У вас не должно возникнуть проблемы с изменением скрытого значения перед отправкой формы на сервер.
Ответ 10
В вашем коде несколько ошибок.
- Вы определяете функцию JavaScript func_load3(), но не вызываете ее.
- Ваша функция определена не в том месте. Когда он определен на вашей странице, объекты HTML, на которые он ссылается, еще не загружены. В большинстве кодов JavaScript проверяется, полностью ли загружен документ перед выполнением, или вы можете просто переместить свой код за элементы, на которые он ссылается на странице.
- У вашей формы нет средств для ее отправки. Для этого требуется кнопка отправки.
- Вы не проверяете, была ли ваша форма отправлена.
Можно задать переменную JavaScript в скрытой переменной в форме, затем отправить ее и прочитать значение на PHP. Вот простой пример, который показывает это:
<?php
if (isset($_POST['hidden1'])) {
echo "You submitted {$_POST['hidden1']}";
die;
}
echo <<<HTML
<form name="myform" action="{$_SERVER['PHP_SELF']}" method="post" id="myform">
<input type="submit" name="submit" value="Test this mess!" />
<input type="hidden" name="hidden1" id="hidden1" />
</form>
<script type="text/javascript">
document.getElementById("hidden1").value = "This is an example";
</script>
HTML;
?>
Ответ 11
Может быть, вы можете использовать метод jquery serialize(), чтобы все было в один конец.
var data=$('#myForm').serialize();
//таким образом вы могли бы получить скрытое значение и на стороне сервера.
Ответ 12
Это очевидно решение не было упомянуто ранее. Вы также можете использовать куки для передачи данных из браузера обратно на сервер.
Просто установите cookie с данными, которые вы хотите передать в PHP, используя JavaScript в браузере.
Затем просто прочитайте этот файл cookie на стороне PHP.
Ответ 13
когда ваша страница впервые загружает код PHP, сначала запустите и установите полный макет вашей веб-страницы. после разметки страницы устанавливается загрузка JavaScript. теперь JavaScript напрямую взаимодействует с DOM и может манипулировать макетом, но PHP не нуждается в обновлении страницы. Единственный способ - обновить страницу и передать параметры в URL-адресе страницы, чтобы вы могли получать данные через PHP. Поэтому мы используем AJAX для взаимодействия Javascript с PHP без перезагрузки страницы. AJAX также может использоваться как API. еще одна вещь, если вы уже объявили переменную в PHP. перед загрузкой страницы вы можете использовать ее с примером Javascript.
<script>
var username = "<?php echo $myname;?>";
alert(username);
</script>
приведенный выше код является правильным, и он будет работать. но приведенный ниже код совершенно неверен и никогда не сработает.
<script>
var username = "syed ali";
var <?php $myname;?> = username;
alert(myname);
</script>
-
Передать значение из JavaScript в PHP через AJAX
это самый безопасный способ сделать это. потому что HTML-контент можно редактировать с помощью инструментов разработчика, а пользователь может манипулировать данными. так что лучше использовать AJAX, если вы хотите обеспечить безопасность этой переменной. Если вы новичок в AJAX, пожалуйста, изучите AJAX, это очень просто.
Лучший и самый безопасный способ передачи переменной JavaScript в PHP - через AJAX.
простой пример AJAX
var mydata = 55;
var myname = "syed ali";
var userdata = {'id':mydata,'name':myname};
$.ajax({
type: "POST",
url: "YOUR PHP URL HERE",
data:userdata,
success: function(data){
console.log(data);
}
});
- PASS значение из JavaScript в PHP через скрытые поля.
в противном случае вы можете создать скрытый ввод HTML внутри вашей формы. лайк
<input type="hidden" id="mydata">
затем через jQuery или javaScript передайте значение в скрытое поле. лайк
<script>
var myvalue = 55;
$("#mydata").val(myvalue);
</script>
Теперь, когда вы отправляете форму, вы можете получить значение в PHP.
Ответ 14
Да, он работает для меня.
<script> var p1 = "success"; </script>
<?php echo "<script>document.writeln(p1);</script>"; ?>