【问题标题】:How to pass a javascript variable from php back to javascript如何将 javascript 变量从 php 传递回 javascript
【发布时间】:2015-05-31 23:35:43
【问题描述】:

我有一个 html 脚本,里面有一个 javascript 变量,然后我将此变量传递给一个 php 文件,以将其递增 1。我的问题是我不知道如何将它传递回html 文件,然后显示它,我也不知道变量在网站上是如何工作的,如果我必须以某种方式保存变量以确保它与我离开网站时的更新变量相同。

html 脚本:

<script type="text/javascript">

                var nrVar= 1;
                document.getElementById("nrVar").innerHTML = nrVar;
                document.getElementByID("nrVar").value = nrVar;

</script>

php 脚本:

    <?php 

    $nrVar= $_POST['nrVar'];

    $nrVar= round((int)$nrVar+1);

?>

【问题讨论】:

  • 我不确定你到底想做什么,但要让你的变量持续存在,你需要例如服务器端的会话或数据库或客户端的本地存储。
  • 我想你在找AJAX

标签: javascript php html variables increment


【解决方案1】:

您必须将您的 javascript 编号保存在表单字段中,将表单发送到 PHP 脚本,在那里增加数字,然后在会话中将其发送回。接下来是代码:

增加1.php

<?php
// GET THE NUMBER FROM PHP. THE FIRST TIME IT'S JUST 1. NEXT TIMES
// THE NUMBER COMES IN SESSION INCREASED FROM PHP SCRIPT.
session_start();
if ( IsSet( $_SESSION["increased"] ) )
     $increased = (int)$_SESSION["increased"];
else $increased = 1;
?>
<html>
  <head>
    <title>Jose Manuel Abarca Rodriguez</title>
    <script type="text/javascript">

// ASSIGN VALUE TO JAVASCRIPT VARIABLE.
var my_number = <?php echo $increased; ?>;

// SEND THE FORM TO INCREASE2.PHP.
function clik () {
document.getElementById("the_number").value = my_number;
document.getElementById("frm").submit();
}
    </script>
  </head>
  <body>
    My number is = <script type="text/javascript">document.write( my_number );</script>
    <br/>
    <button onclick="clik()">Increase my number</button>

<!-- FORM TO SEND NUMBER TO PHP. -->
    <form method="post" action="increase2.php" 
          id="frm" style="display:none">
      <input type="text" id="the_number" name="the_number"/>
    </form>

  </body>
</html>

increase2.php

<?php
session_start();
$num = (int)$_POST["the_number"];
$_SESSION["increased"] = ++$num; // !!! NEVER $num++ !!!
header("Location: increase1.php" ); // BACK TO FIRST PAGE.
?>

使用给定的名称创建两个文本文件(increase1.php 和 increase2.php),打开浏览器并运行 localhost/increase1.php。

【讨论】:

【解决方案2】:

假设 $_POST 是通过正常提交而不是 AJAX 请求发送的。我将使用 PHP 生成脚本以及站点的其余部分来定义变量值:

<script>
var nrVar = parseInt('<?php echo $_POST['nrVar']; ?>');
</script>

parseInt 这里是为了确保我们得到整数值,$_POST 清理也是防止 xss 甚至 javascript 直接注入的好主意。

【讨论】:

  • 所以我会在同一个javascript函数中使用这段代码,然后它会从php脚本中获取它?
  • 该代码将出现语法错误。看你的报价
猜你喜欢
  • 2010-11-02
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 2019-07-07
  • 2017-04-29
  • 2011-04-09
  • 2011-09-27
相关资源
最近更新 更多