Web

Передача переменных JavaScript в PHP?

Я хочу передать переменные 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 (конечно, не на текущую страницу).

Варианты:

  1. Отправьте информацию в форме, указанной здесь (приведет к обновлению страницы);

  2. Передайте его в Ajax (без обновления страницы);

  3. Сделайте 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

Как я могу измерить скорость кода, написанного на PHP

Web

Отправка электронной почты с помощью SMTP-сервера GMail со страницы PHP

Web

Как я могу выбрать и загрузить несколько файлов с помощью HTML и PHP, используя HTTP POST?

Twitch: что это за сайт и почему он популярен среди стримеров?
Web

Twitch: что это за сайт и почему он популярен среди стримеров?

×