首页 > 解决方案 > php $_POST 使用javascript调用php函数时返回空

问题描述

我还在学习php和java脚本。我正在创建一个简单的联系表单并使用 $_Server[php_self] 将表单操作设置为同一页面

我想要做的是当有人提交给我的表单时,它会显示一条消息,其中包括在同一页面上提交的名称。用消息替换联系表。

我还尝试将操作指向不同的 php 页面。它仍然没有工作。Javascript 是这样工作的吗?或者我必须使用不同的代码或语言来做到这一点。

这是我的代码

<!DOCTYPE html>
<html>
<head>
    <?php 
    include 'action.php';
?>
    <title> My profle</title>
    <meta name="robots" content="noindex">
    <link rel="stylesheet" type="text/css" href="style.css">

</head>
<body>
<div class="contact">
   <form class="form" class="contact" id="contact-form" action="action.php" method="POST">
            Name: <br>
           <input type="text" class="field" name="name"><br>
           Number:<br>
           <input type="text" class="field" name="number"><br>
           Email:<br>
           <input type="email" class="field" name="email:>"<br>
           <br>
           <input type="submit" class="submit" name="submit" value="submit"
           onclick ="document.getElementById('contact-form').innerHTML='<?php thankyou();?>'">
       </form>
</div>
</body>
</html>

然后这里是action.php

<?php
    function thankyou(){
        $name = $_POST['name'];
        echo "Thank you"." $name ! Your message has been submitted.";
    }
?>

标签: javascriptphpformspost

解决方案


你在这里有几个不同的问题。

首先是对 PHP 和 JS 的运行时机缺乏了解。

第二个是加载新页面时 DOM 更改丢失。

这是正在发生的事情:

  1. 浏览器请求页面
  2. PHP 运行($_POST没有name密钥)
  3. 浏览器获取页面
  4. 你点击提交按钮
  5. JavaScript 运行,并设置innerHTML(记住 PHP 在第 2 步运行)
  6. 表单提交导致浏览器导航到新页面
  7. PHP 再次运行
  8. 浏览器获取新页面......并且对前一页面所做的 DOM 更改丢失

进一步阅读:客户端和服务器端编程有什么区别?.


推荐阅读