Как передать переменные 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> 

Вы не можете передавать значения переменных из текущей страницы 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> 

Существует несколько способов передачи переменных из javascript в php (конечно, не на текущую страницу)

Ты мог:

  1. отправьте информацию в форме, указанной здесь, (это приведет к обновлению страницы)
  2. передайте его в ajax (несколько сообщений здесь об этом) (без обновления страницы)
  3. сделать запрос http через запрос XMLHttpRequest (без обновления страницы) следующим образом:
 <script> 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(); </script> 

Я уверен, что это может быть сделано для того, чтобы выглядеть более любезным и охватывать все переменные и еще что-то – но я сохранил его в качестве основного, чтобы облегчить понимание для новичков.

просто сохраните его в файле cookie:

 <script> $(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=/"; } </script> 

и затем прочитайте его с помощью php

 < ? PHP $_COOKIE["height"]; ?> 

это не очень хорошее решение, но оно работает. Приветствия.

Вот пример работы: Получить значение переменной javascript на той же странице в php.

 <script> var p1 = "success"; </script> <?php echo "<script>document.writeln(p1);</script>"; ?> 

PHP запускается на сервере до того, как страница будет отправлена ​​пользователю, JavaScript запускается на компьютере пользователя после его получения, поэтому скрипт PHP уже выполнен.

Если вы хотите передать значение JavaScript скрипту PHP, вам нужно будет выполнить 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> 

Нажав кнопку «Отправить», вы отправите страницу и распечатайте представленные данные.

Я пытался понять это сам, а затем понял, что проблема в том, что это своего рода обратный взгляд на ситуацию. Вместо того, чтобы пытаться передать вещи от java до php, возможно, лучше всего идти в обратном направлении, в большинстве случаев. PHP-код выполняется на сервере и создает html-код (и, возможно, скрипт java). Затем браузер загружает страницу и выполняет сценарий html и java.

Кажется, что разумный подход к подобным ситуациям – использовать PHP для создания java-скрипта и html, который вы хотите, а затем использовать скрипт java на странице, чтобы делать то, что PHP не может сделать. Похоже, что это даст вам преимущества как PHP, так и java-скрипта довольно простым и прямым способом.

Одна вещь, которую я сделал, дает возможность передавать вещи на PHP с вашей страницы на лету, используя тег html image для вызова кода PHP. Что-то вроде этого:

<img src = "pic.php">

PHP-код в pic.php фактически создаст HTML-код до того, как ваша веб-страница будет загружена, но этот html-код в основном называется «на лету». PHP-код здесь может быть использован для создания изображения на вашей странице, но он может иметь любые команды, которые вам нравятся помимо того, что в нем. Возможно, это изменяет содержимое некоторых файлов на вашем сервере и т. Д. Поверхность этого заключается в том, что PHP-код может быть выполнен из html, и я предполагаю java-скрипт, но нижняя сторона заключается в том, что единственным выходом, который он может разместить на вашей странице, является изображение. У вас также есть возможность передавать переменные в php-код через параметры в URL-адресе. Счетчики страниц будут использовать эту технику во многих случаях.

Мы можем легко передавать значения даже на одинаковых / разных страницах, используя куки, показанные в коде, следующим образом (в моем случае я использую его с интеграцией 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']; } ?> 

Является ли ваша функция, которая задает значение скрытой формы, вызывается? Это не в этом примере. У вас не должно возникнуть проблемы с изменением скрытого значения перед отправкой формы на сервер.

Вот как я это сделал (необходимо вставить локальный часовой пояс в 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); 

Может быть, вы можете использовать метод jquery serialize (), чтобы все было в разы.

 var data=$('#myForm').serialize(); 

// таким образом вы можете получить скрытое значение, а также на стороне сервера.

У вашего кода несколько ошибок.

  • Вы определяете функцию 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; ?> 

Да, он работает на меня.

 <script> var p1 = "success"; </script> <?php echo "<script>document.writeln(p1);</script>"; ?>