如何将 JavaScript 变量传递给 PHP?

IT技术 php javascript variables
2021-01-01 01:21:05

我想使用表单中的隐藏输入将 JavaScript 变量传递给 PHP。

但我无法获得$_POST['hidden1']into的value$salarieid有什么不对?

这是代码:

<script type="text/javascript">
    // View what the user has chosen
    function func_load3(name) {
        var oForm = document.forms["myform"];
        var oSelectBox = oForm.select3;
        var iChoice = oSelectBox.selectedIndex;
        //alert("You have chosen: " + 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 displaying the query result.
</table>
6个回答

您不能将变量值从当前页面 JavaScript 代码传递到当前页面 PHP 代码...... PHP 代码运行在服务器端,它对客户端发生的事情一无所知。

您需要使用另一种机制将变量从 HTML 表单传递给 PHP 代码,例如使用 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>
此时:是的,您需要使用 AJAX 技术。如果您在实现方面遇到麻烦,我想我可以提供帮助。
2021-02-15 01:21:05
@sergey,所以我需要使用ajax?事实上,我对此很熟悉。
2021-02-18 01:21:05
@MadaraUchiha OP 已经使用的mysql_功能;完全重写来回答这个问题不是目标。
2021-02-19 01:21:05
实际上,我在过去的一级选择框中使用了您的方法。但是现在我已经做了一个三链选择框,所以我不能使用你的方法。
2021-02-25 01:21:05
@Sergey,我在这里使用 POST 方法提交表单,我不知道为什么它不起作用。你知道为什么吗?以及如何解决?
2021-02-26 01:21:05

只需将其保存在 cookie 中:

$(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"];
?>

这不是一个很好的解决方案,但它有效。

我得到错误未定义索引:高度
2021-02-07 01:21:05
实际上,这是一个很好的解决方案!从 php 到 javascript 很容易。从 javascript 到 php 并不容易。使用 cookie 简单、优雅。没有bs..!!当然,如果客户端关闭 cookie,这是一个需要处理默认值的问题。
2021-02-22 01:21:05
终于!一个有效的解决方案!我一直在寻找解决方案的时间,制作游戏并希望将最高分发送到数据库,现在已修复!干杯!
2021-03-02 01:21:05
尽管获得了所有赞成票,但这并不是一个好的解决方案。原因:直到一次浏览器请求页面时,服务器才会看到 cookie 它总是“落后”。第一次在浏览器中打开页面时,根本不会有任何 cookie。这是可以接受的吗?下次在浏览器中打开页面时,会有第一次的cookie。对于一个数值,例如这个例子,这可能是可以容忍的(尽管第一次不工作!!)。现在考虑一个动态值,例如当前日期时间。php 将看到以前的日期时间,而不是现在。使用Ajax。
2021-03-08 01:21:05
您能否让我知道如何使用 $_COOKIE["height"] 东西来获取其中的名称和值?谢谢。不为我工作。
2021-03-09 01:21:05

有多种方法可以将变量从 JavaScript 传递到 PHP(当然不是当前页面)。

你可以:

  1. 以此处所述的形式发送信息(将导致页面刷新)
  2. 在 Ajax 中传递它(这里有几篇关于这个的帖子)(没有页面刷新)
  3. 通过 XMLHttpRequest 请求(不刷新页面)发出 HTTP 请求,如下所示:

 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();

我确信这可以使它看起来更漂亮,并循环遍历所有变量等等——但我保持了它的基本性,以便让新手更容易理解。

每次提交新表单时,我将如何获取 db 数组并将其传递给 javascript。那么javascript中的变量也会改变。如何?帮我。:(
2021-02-12 01:21:05
Ajax其实就是XMLHttpRequest,后者只是它的一个技术名词。
2021-02-27 01:21:05

这是工作示例:在 php 中的同一页面上获取 javascript 变量值。

<script>
var p1 = "success";
</script>

<?php
echo "<script>document.writeln(p1);</script>";
?>
你可以试试这样 <script> var p1 = "success"; </script> <?php $x = "<script>document.writeln(p1);</script>"; 回声 $x; ?>
2021-02-09 01:21:05
我尝试了这个概念然后真正起作用了,但是如果我像这样尝试:<?php var x =<script>document.writeln(p1);</script>"; ?>, then echo x; 它不起作用。你有别的办法吗?
2021-02-21 01:21:05
在这种情况下,php 只是将 javascript 作为字符串回显到页面。Javascript 没有被传递给 php。
2021-02-21 01:21:05
是的,这就是我们需要做的......有时我们需要在同一页面上的 php 中使用 JavaScript 值,而不刷新页面......然后它就会像魅力一样工作...... :)
2021-02-28 01:21:05
@ArslanTabassum 不,您误解了评论。php 永远不会看到 p1 的值。echo "<script>document.writeln(p1);</script>";使用JavaScript变量p1JavaScript的,而不是在PHP。document.writeln是一个javascript函数,您在浏览器中执行它,而浏览器正在构建 HTML 页面。
2021-03-08 01:21:05

当您的页面首次加载 PHP 代码时,首先运行并设置您网页的完整布局。在页面布局之后,它设置了 JavaScript 加载。现在 JavaScript 直接与 DOM 交互并且可以操作布局,但 PHP 不能它需要刷新页面。唯一的方法是刷新页面并在页面 URL 中传递参数,以便您可以通过 PHP 获取数据。所以我们使用 AJAX 与 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>
  • 通过 AJAX 将值从 JavaScript 传递到 PHP

    这是最安全的方法。因为 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);
            }
            });
  • 通过隐藏字段将值从 javascript 传递到 php。

否则,您可以在表单中创建隐藏的 HTML 输入。喜欢

<input type="hidden" id="mydata">

然后通过 jQuery 或 javaScript 将值传递给隐藏字段。喜欢

<script>
var myvalue = 55;
$("#mydata").val(myvalue);
</script>

现在,当您提交表单时,您可以获得 PHP 中的值。

谢谢你。很有帮助。jQuery 方法不允许您传递在页面运行时生成的数据?您不能将输入字段设置为值并通过 php 获取它?这是我见过的最清晰的 Ajax 示例之一。我很期待尝试一下。
2021-02-07 01:21:05