PHP回显javascript

时间:2014-06-13 00:50:01

标签: javascript php html

在表单提交上,我想给用户一条消息。

最初,我在做

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为空。

enter image description here

有什么想法吗?


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>

3 个答案:

答案 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";

如果页面重新加载,你可以在需要的地方回复提交。