繁体   English   中英

PHP:将JavaScript函数的结果存储到PHP变量中

[英]PHP: Store Result of JavaScript Function into a PHP Variable

请记住,我是PHP的新手。 这个学期我才刚开始上这门课。

这是我最终想要做的:我有一个高级项目,正在构建计算机维修系统。 在修复MySQL表中,我有一堆字段,其中一个是CustomerID(因此我知道哪个客户进行了哪个修复)。 我想淹没客户的名字,然后单击它,然后介绍一些如何将该客户的ID附加到变量上,以便执行INSERT语句。 为了部分实现这一目标,我在较小的部分中做了一些工作。 我工作的一小部分是当我选择一个下拉值时,将其输出到屏幕上,但这在javascript函数中。

这是我的代码:

<?PHP
include('session.php');
$db_name = "";
$mysql_username = "";
$mysql_password = "";
$mysql_server = "";
$mysqli = new mysqli($mysql_server, $mysql_username, $mysql_password, 
$db_name);
$query = "SELECT custID, CONCAT(custFirstName, ' ', custLastName) as 
Customer_Name FROM customer";
$result = mysqli_query($mysqli, $query);

echo "<select name ='names' id='myselect' onchange = \"myFunction()\">";
while ($row = mysqli_fetch_array($result)){
echo "<option value = '" . $row['custID'] . "'>" . $row['Customer_Name'] . "
</option>";
}
echo "</select>";
echo "<p>When you select a customer name, a function is triggered which 
outputs the ID of the selected customer.</p>
<p id=\"demo\"></p>

<script>
function myFunction() {
var x = document.getElementById(\"myselect\").value;
document.getElementById(\"demo\").innerHTML =  x;
}
</script>"; 

$content = "<script> document.write(x) </script>";

echo "<br> <br> The technician ID = $sTechID <br> <br> The customer ID = $content";
?>

我可以使用Javascript函数将ID输出到屏幕上,但是当我尝试将“ x”存储到php变量中时,它将不起作用。 在chrome中,检查员说X是未定义的。

旁注:我用此代码制作了一个测试文件,它起作用了:

<?PHP
echo "
<script> 
var x = \"hello\"
</script>";

$content = "<script> document.write(x) </script>";

echo "$content <br> <br> $content";
?>

因为上面的代码有效,所以我不明白为什么我的较大代码无法正常工作。

我了解我的代码很烂,但是任何帮助将不胜感激。 谢谢!

我认为您通常需要更好地了解PHP。 在浏览器执行您已回显的html / js之前,将执行PHP。 起作用的原因:

<?PHP
echo "
<script> 
var x = \"hello\"
</script>";

$content = "<script> document.write(x) </script>";

echo "$content <br> <br> $content";
?>

这是因为您正在向dom编写JS,并且一旦您的浏览器读取它,它就会被执行。 如果您运行var_dump($content); 您将看到,存储在该PHP变量中的内容不是x的结果,而是实际上是包含文本"<script> document.write(x) </script>"的文字字符串。

echo "$content <br> <br> $content"; 打印"<script> document.write(x) </script> <br> <br> <script> document.write(x) </script>"; DOM,然后在浏览器中以JS的形式运行。

如果您希望下拉选择在PHP中做某事,建议您在下拉菜单更改时触发JS函数,然后将AJAX请求发送到一个单独的PHP文件,该文件执行您需要在其中进行的操作并将其返回给您功能。 这样,您无需导航到另一个PHP页面即可更新HTML。

PHP是一种后端语言,无法检测到诸如单击,更改等前端事件。

在较大的代码中,仅当事件被触发( onchange )(即select输入发生更改)时才定义x的值。 Javascript以这种方式工作,但是PHP却没有。 一旦PHP第一次发送响应,它的工作就完成了。

这是您要使用表格或Ajax的时间。 使用表格将是一个好的开始。

快速说明,最好将HTML,CSS和JS与PHP尽可能分开。

...
$result = mysqli_query($mysqli, $query);

?>

<form method='post' action='insert.php' /> <!-- Link to php file to insert data to database -->
  <select name ='names' id='myselect' onchange = "myFunction()">
  <?php 
      while ($row = mysqli_fetch_array($result)){
        echo "<option value = '" . $row['custID'] . "'>" .  $row['Customer_Name'] . "
               </option>";
      }
  ?>
  </select>
  <input type="submit" value="submit" /> <!-- You will need a button to submit the data -->
</form>

<p>When you select a customer name, a function is triggered which 
outputs the ID of the selected customer.</p>
<p id="demo"></p>

现在,您的insert.php文件将如下所示:

<?php 

// Get data from that was posted from the form
$customer_id = $_POST['names'];

// Now do whatever with the customer ID
echo $customer_id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM