Php 如何从表单post操作返回表单?

Php 如何从表单post操作返回表单?,php,html,forms,jquery,Php,Html,Forms,Jquery,我有一个表单,其中包含一个文本区域,用于将文本输入。表单还包含一个提交按钮。按下submit按钮后,它将textarea中的文本发布到我的php文档中。在我的php文档中,文本被添加到数据库中。一旦它被添加到数据库中,我希望它回显一个响应,告诉用户它已成功地将文本添加到数据库中。 但是,如果我让它回显该响应到主页,则没有任何地方声明它可以显示回显的消息。有没有人知道我应该怎么做才能让它工作?非常感谢 通常情况下,我不会直接使用表单中的帖子,我会使用ajax,然后在返回的段落或其他内容中显示数据,

我有一个表单,其中包含一个文本区域,用于将文本输入。表单还包含一个提交按钮。按下submit按钮后,它将textarea中的文本发布到我的php文档中。在我的php文档中,文本被添加到数据库中。一旦它被添加到数据库中,我希望它回显一个响应,告诉用户它已成功地将文本添加到数据库中。 但是,如果我让它回显该响应到主页,则没有任何地方声明它可以显示回显的消息。有没有人知道我应该怎么做才能让它工作?非常感谢

通常情况下,我不会直接使用表单中的帖子,我会使用ajax,然后在返回的段落或其他内容中显示数据,然而,由于表单是自己发布的,因此我不确定在何处声明响应应该显示在何处

下面显示了我的html表单代码,并显示了发布到php文件的操作

           <div id="userban2"><form id="bannable" action="/onlineusers.php" method="post"><p> Type username to ban bellow:</p>
     <textarea name="banned" id="banned" maxlength="255"></textarea><br/>
     <input type="submit" value="Send" class="extrabuttons" onclick="return false; preventDefault();">
     <div id="cancelban" class="extrabuttons"><p> cancel</p></div>
     </form>
它可能会发送回回显,但是它没有声明在任何地方显示。我如何更改它以使其在表单中显示响应

按要求从我的php返回

if(isset($_POST["banned"])){
           $ban_name = $_POST["banned"]; 
         bannedd($ban_name);
          }
          function bannedd($ban_name) {
         $query1 = mysql_query("INSERT INTO banned_users     (username,firstname,lastname,email,password,ip_address,sign_up_date,last_logged_in,about,sta    rr,userpref)     VALUES('$usernameb','$fnameb','$lnameb','$emailb','$passwordb','$ip_addressb','$sign_up_date    b','$last_logged_inb','$aboutb','$starrb','$userprefb')") or die("Could not insert your     informaion");
          echo "This user has successfully been banned"; 
        }

由于表单具有post到我的php的操作和方法,因此表单会发布表单中编写的内容。但是,如果我有任何返回,我不确定如何声明返回的信息应显示在何处(回显消息)。

您的表单正在提交给/onlineusers.php

这是您希望添加echo语句的地方。

如果您需要同一页面上的信息,您可以返回到同一页面,表单操作为$\u SERVER['PHP\u SELF']

<form id="bannable" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">


这将检查您是否有任何post数据,如果有,那么它将包括您指定的脚本。如果成功写入DB,可能会将$testVar设置为true,然后在HTML中返回$msg。

如果我理解正确,您的表单位于某个
index.php
文件中,并将数据发送到其他文件-
onlineusers.php
,您想在原始页面中显示消息吗

如果是这种情况,我能想到的最简单的方法就是使用URL参数重定向回原始页面,而不是回显

onlineusers.php的末尾执行此操作:

<?php
    // insert text into DB ...
    header("Location: index.php?result=ok");
?>

这会将浏览器重定向回包含表单的原始页面。在这里,您可以检查是否设置了状态变量:

<html>
<head></head>
<body>
    <?php if(isset($_GET["result"]) && $_GET["result"]=="ok") { ?>
        <p>The information has been added to the database successfully</p>
    <?php } ?>
    <form> ... </form>
</body>
</html>

信息已成功添加到数据库中

...
正如您可能看到的,您可以通过这种方式设置其他结果,例如“error”


如果您不喜欢URL中的额外字符串,请在
onlineusers.php
中处理表单后创建一个cookie,然后返回原始页面,检查是否设置了此类cookie。如果你需要更多的细节,请告诉我。如果你问的是完全不同的问题,那么,没关系:)

你是否在使用ajax?请更清楚地说明你是如何发布数据的(这是“preventDefault()”函数吗?),并提供你迄今为止编写的响应脚本(“onlineusers.php”)。ajax似乎是最好的选择。它用于在php交互后返回消息。我不明白你为什么不使用它。危险:你正在使用并且应该使用。你也很容易受到现代API的影响,因为它可以让你更轻松地使用。我也在想同样的事情,但使用session approch:)是的,这可能是一种更干净、更“专业”的方式,对于一个更大的web应用程序(你不想污染你一半的URL)来说绝对是必须的,但如果是一种单一情况的话(例如,一个商业推广网站上的联系人表单),我不想麻烦:)那么,在这种情况下,我不会使用任何外部PHP文件,只需在HTML输出之前处理同一页面顶部的表单数据。是的。。。我就是这么想的。这就是为什么我喜欢有条件地包含所需的脚本,然后分配一个success/fail变量。我在使用“header”(位置:ABC)时遇到的唯一问题;有时您会收到“已发送邮件头错误消息”。
<?php
    // insert text into DB ...
    header("Location: index.php?result=ok");
?>
<html>
<head></head>
<body>
    <?php if(isset($_GET["result"]) && $_GET["result"]=="ok") { ?>
        <p>The information has been added to the database successfully</p>
    <?php } ?>
    <form> ... </form>
</body>
</html>