将具有获取的数据的PHP变量传递给JavaScript变量将返回NULL或为空

时间:2019-06-26 20:46:07

标签: javascript php jquery html

这个问题是关于在JS中返回PHP变量的值的问题。它返回NULL或为空而不是返回年龄。

方法:

将带有数据的PHP变量传递到单独文件中的JS变量。在alert()中显示JS变量。在while循环中使用fetch_assoc()从数据库中获取了数据。不使用AJAX!

目标计划:

1:输入名称。

2:提交。

3:PHP获取与该名称关联的年龄。

4:年龄存储在PHP变量dbage中。

5:传递给JS变量以提醒用户年龄。

我试图将 $dbage sampletest.php 传递给示例中的 user 。 php ,它将在提交时显示警告:"Your age is blah"

blah $dbage =包含年龄。这是用于测试。一旦理解了为什么它不起作用,那么我就可以继续将这些js变量发送到将进行计算并返回到数据库的函数。

到目前为止我已经尝试过了。

  1. 尝试使用ob_start()捕获回声,但也返回NULL。

示例:

       ob_start();
       echo $dbage;
       $output = ob_get_contents();
       ob_end_clean();
  1. 使$dbage为全局变量。返回空。

  2. while循环外的echo变量,但返回NULL。

示例:

        $dbage = '';
        while( $row = $result->fetch_assoc()) {
            $dbage = $row['age'];
        }
        echo $dbage;

任何建议,请多多指教,谢谢。

sample.php(索引文件)

<?php
include 'sampletest.php';
session_start();

?>

<!DOCTYPE html>
<html>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">    
<body>
     <div id="id03">
      <form class="modal-content" action="sampletest.php" method="post" onsubmit="myFunction()">
        <div class="container">
          <input type="text" id="name" placeholder="Enter name"  name="name">
            <div class="clearfix">
            <button type="submit" class="loggedinbtn" name="load"/>Load
          </div>
        </div>
      </form>
    </div>    

    <script>
    function myFunction() {
        var user = '<?php echo(json_encode($dbage)); ?>';
        alert("This is a php varible " + user);
    }
    </script>
    </body>
</html>

sampletest.php

if(isset($_POST['load'])){
    require 'config.php';

        $name = $_POST['name'];
        $age = $_POST['age'];


        if(empty($name)) {
        echo "Enter a number";
        }elseif(!preg_match('/^[a-z ]+$/i', $name)){
        echo "Enter a letter, no numbers";
        }else{
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
            header("location: sample.php?Connect-database=failed");
            exit();
        } 
        $sql = "SELECT name, age FROM results WHERE name= '$name';";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            while( $row = $result->fetch_assoc()) {                    
                 $dbage = $row['age'];

            }
        }
        else{
            echo "0 results";
        }
        $conn->close();
        }    
}

2 个答案:

答案 0 :(得分:1)

您在表单中的操作应设置为sample.php,我认为这是第一个问题。然后一起摆脱JavaScript。

<form class="modal-content" action="sample.php" method="post">

然后更改:

<script>
function myFunction() {
    var user = '<?php echo(json_encode($dbage)); ?>';
    alert("This is a php varible " + user);
}
</script>

公正

<script>
    var user = <?php echo $dbage; ?>;
    alert("This is a php varible " + user);
</script>

将html表单提交给PHP完全不需要javascript。

答案 1 :(得分:0)

从我所看到的是,您要发送的实际查询是{name ='$ name'},请尝试{name ='“。$ name。”'}。