在表单提交上,我想给用户一条消息。
最初,我在做
if(isset($_POST['submit'])) {
echo "submitted";
}
但这会在页面顶部随机出现。
我希望控制输出消息的位置,所以我想将消息附加到DOM元素...为此,我想我可以使用JavaScript:
if(isset($_POST['submit'])) {
echo "<script type=\"text/javascript\">
document.getElementById(\"submitmsg\").innerHTML = \"submitted\";
</script>";
}
HTML显示PHP似乎正确输出了JS,但submitmsg
为空。
有什么想法吗?
HTML表单调用自身,以便它可以在页面顶部运行PHP代码:
<form role="form" action="" method='post' accept-charset='UTF-8'>
<div class="row">
<div class="form-group col-xs-12 floating-label-form-group">
<input class="form-control" type="text" name="name" placeholder="Name">
</div>
</div>
<div class="row">
<div class="form-group col-xs-12">
<button type="submit" name="submit" class="btn btn-lg btn-success">Send</button>
</div>
</div>
</form>
答案 0 :(得分:3)
由于你没有发布所有代码,所以不确定你真正做了什么,但我看到了2个选项。
首先:在提交时,您使用ajax查询而不刷新页面。如果是这种情况你应该使用oncomplete()
回调来做javascript的东西(php不应该返回javascript代码)。
第二:重新加载页面,然后你应该使用PHP直接在你的代码中的任何地方回显html:
<nav ... >...</nav>
<p id='submitted><?= isset($_POST['submit']) ? "Submitted" : "" ?></p>
请注意,您可以将php标记放在您想要的位置:
<html>
<head>
<title><?php echo "Today is " . date('Y-m-d');?></title>
</head>
<body>
<?= "My Cool Body" ?>
</body>
<html>
答案 1 :(得分:1)
我希望控制输出消息的位置
为什么不将提交状态存储在PHP变量中并在需要时输出:
<?php
$is_submitted = isset($_POST['submit']);
?>
<html>
<body>
<!-- your page -->
<nav></nav>
<?php if($is_submitted) : ?>
<p id="submitmsg">Submitted</p>
<? endif; ?>
或者甚至只需将isset()
支票内联到您的页面下方即可。
但这会在页面顶部随机出现。
回显Javascript调用以显示此消息没有意义,您可以将PHP放在文档中的任何位置。
答案 2 :(得分:0)
其他答案几乎是正确的方法..如果你想坚持你现在做的事情,只需将你的php输出切换到:
window.onLoad = document.getElementById("submitmsg").innerHTML = "submitted";
如果页面重新加载,你可以在需要的地方回复提交。