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生成的内容放在何处