javascript - 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.";
}
?>
解决方案
你在这里有几个不同的问题。
首先是对 PHP 和 JS 的运行时机缺乏了解。
第二个是加载新页面时 DOM 更改丢失。
这是正在发生的事情:
- 浏览器请求页面
- PHP 运行(
$_POST
没有name
密钥) - 浏览器获取页面
- 你点击提交按钮
- JavaScript 运行,并设置
innerHTML
(记住 PHP 在第 2 步运行) - 表单提交导致浏览器导航到新页面
- PHP 再次运行
- 浏览器获取新页面......并且对前一页面所做的 DOM 更改丢失
进一步阅读:客户端和服务器端编程有什么区别?.
推荐阅读
- c# - DataGridView 导入 .xml 文件
- python - 用户错误异常:用户错误异常:
- python - Python: requests.exceptions.ConnectionError: ('Connection aborted.', OSError("(10054, 'WSAECONNRESET')"))
- android - 如何从 windows10 中彻底删除 ADB 命令?
- python-3.x - 按 UUID 分组,为相同 UUID 的多个条目创建多个列
- mysql - Laravel DB::select 语法错误或访问冲突错误(用作本机查询)
- axios - 当我运行我的 nuxt 应用程序时,Webpack 客户端抛出错误
- flutter - 将flutter_sodium与最新的flutter框架一起使用
- c - 我如何解密 A AES 128 CBC 消息的消息
- swift - 返回 AnyObject 时出现 Swift“无法实例化协议类型‘AnyObject’”错误