PHP回显javascript
在表单提交时,我想给用户一条消息 原来,我在做什么PHP回显javascript,javascript,php,html,Javascript,Php,Html,在表单提交时,我想给用户一条消息 原来,我在做什么 if(isset($_POST['submit'])) { echo "submitted"; } 但这会随机出现在页面顶部 我想要控制消息输出的位置,所以我想将消息附加到DOM元素。。。为此,我想我可以使用JavaScript: if(isset($_POST['submit'])) { echo "<script type=\"text/javascript\"> document.getEl
if(isset($_POST['submit'])) {
echo "submitted";
}
但这会随机出现在页面顶部
我想要控制消息输出的位置,所以我想将消息附加到DOM元素。。。为此,我想我可以使用JavaScript:
if(isset($_POST['submit'])) {
echo "<script type=\"text/javascript\">
document.getElementById(\"submitmsg\").innerHTML = \"submitted\";
</script>";
}
我想要控制消息输出的位置
为什么不将提交状态存储在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放在文档中任何需要的地方
我想要控制消息输出的位置
为什么不将提交状态存储在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放在文档中任何您想要的位置。由于您没有发布所有代码,因此不确定您真正要做什么,但我看到了两个选项 第一:在提交时,使用ajax查询,不刷新页面。如果是这种情况,您应该使用
oncomplete()
回调来执行javascript内容(php不应该返回javascript代码)
第二:重新加载页面后,应使用PHP在代码中的任何位置直接回显html:
<nav ... >...</nav>
<p id='submitted><?= isset($_POST['submit']) ? "Submitted" : "" ?></p>
。。。
我不知道你到底在做什么,因为你没有发布所有的代码,但我看到了两个选择
第一:在提交时,使用ajax查询,不刷新页面。如果是这种情况,您应该使用oncomplete()
回调来执行javascript内容(php不应该返回javascript代码)
第二:重新加载页面后,应使用PHP在代码中的任何位置直接回显html:
<nav ... >...</nav>
<p id='submitted><?= isset($_POST['submit']) ? "Submitted" : "" ?></p>
。。。
其他答案几乎都是正确的。。如果您想坚持现在的工作方式,只需将php输出切换到:
window.onLoad = document.getElementById("submitmsg").innerHTML = "submitted";
如果页面被重新加载,您可以在需要的地方回显提交的内容。其他答案几乎都是正确的。。如果您想坚持现在的工作方式,只需将php输出切换到:
window.onLoad = document.getElementById("submitmsg").innerHTML = "submitted";
如果页面被重新加载,您可以在需要的地方回显提交的内容。您是在主html之前还是之后回显它?当浏览器遇到脚本标记时,它会立即执行它。此时,浏览器尚未解析您的
元素,因此将抛出一个错误(因为您的javascript正在获取一个尚不存在的元素).@Bart如何确保在追加文本之前加载
元素?Bart在输出文本之前,必须先输出p标记js@Growler将echo语句放在元素之后,或使用窗口.onload
事件。当浏览器遇到脚本时,您是在主html之前还是之后回显它标记,它立即执行它。此时,浏览器尚未解析您的
元素,因此将抛出一个错误(因为您的javascript正在获取一个尚不存在的元素).@Bart如何确保在追加文本之前加载
元素?Bart在输出文本之前,必须先输出p标记js@Growler将echo语句放在元素之后,或者使用window.onload
事件。我想您的意思是window.onload
对于原生javascriptI,我喜欢第二个选项但是,即使在我刷新页面之后,也会输出消息。如果我刷新,isset
是否应该重置为false
?@ohgod我为什么提到XMLHttpRequest
callbacks@Growler视情况而定。通常,您的web浏览器会询问您是否要重新发布请求,如果您想重新发布请求,则这是一个新的提交。@Growler,如果您使用header('Location:path/to/my/file.php'),可以防止发生这种情况
并使用$\u SESSION
变量来检查isset。我想您的意思是window.onload
对于原生javascriptI,我喜欢第二个选项。但是,即使在我刷新页面之后,也会输出消息。如果我刷新,isset
是否应该重置为false
?@ohgod我为什么提到XMLHttpRequest
callbacks@Growler视情况而定。通常,您的web浏览器会询问您是否要重新发布请求,如果您想重新发布请求,则这是一个新的提交。@Growler,如果您使用header('Location:path/to/my/file.php'),可以防止发生这种情况
并使用$\u SESSION
变量检查isset。我很困惑。如果PHP是服务器端的,因此在客户端HTML之前加载,那么PHP不会在HTML加载之前运行吗?因此,如何将PHP进一步“放置”在文档中并按该顺序执行?PHP在服务器端执行,在您的例子中,您使用它生成HTML。一旦PHP被执行,您就有了发送到客户端的HTML文档。您可以通过将PHP生成的内容放在HTML页面的任何位置来控制其放置位置。如果你用Javascript生成大量的页面结构(这是不寻常的),这是唯一不起作用的方法。如果PHP是服务器端的,因此在客户端HTML之前加载,那么PHP不会在HTML加载之前运行吗?因此,如何将PHP进一步“放置”在文档中并按该顺序执行?PHP在服务器端执行,在您的例子中,您使用它生成HTML。一旦PHP被执行,您就有了发送到客户端的HTML文档。您可以控制将PHP生成的内容放在何处