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