我遇到了问题,因为每次有人提交表单时我的网站会重新加载。
这是一个大卷轴,所以我发现了另一个解决方案,但给了我一个错误。
PHP代码:
<?php
session_name("fancyform");
session_start();
$_SESSION['n1'] = rand(1,20);
$_SESSION['n2'] = rand(1,20);
$_SESSION['expect'] = $_SESSION['n1']+$_SESSION['n2'];
if(isset($_SESSION['sent']))
{
$success='<h1>Thank you!</h1>';
unset($_SESSION['sent']);
header('Location: index.php#5');
}
?>
表格代码:
<form class="demo-form" name ="demo-form" data-parsley-validate method="post" action="submit.php" >
<ul>
<li class="js-hide-label">
<label for="name">Nombre:</label>
<input type="text" placeholder="Nombre" id="name" name="name" data-parsley-trigger="change" required tabindex="1" autocomplete="off" value="<?php echo (isset($_SESSION['post']['name']) ? $_SESSION['post']['name'] : ''); ?>" >
</li>
<li class="js-hide-label">
<label for="email">Your Email:</label>
<input type="email" placeholder="Your Email" id="email" data-parsley-trigger="change" name="email" autocomplete="off" required tabindex="2" value="<?php echo (isset($_SESSION['post']['email']) ? $_SESSION['post']['email'] : ''); ?>">
</li>
<li class="js-hide-label">
<label for="message">Message:</label>
<textarea placeholder="Message…" id="message" name="message" tabindex="3" required data-parsley-trigger="keyup" textarea id="message" data-parsley-minlength="20" data-parsley-maxlength="100" data-parsley-minlength-message = "Come on! You need to enter at least a 20 caracters long comment.." data-parsley-validation-threshold="10"><?php echo (isset($_SESSION['post']['message']) ? $_SESSION['post']['message'] : ''); ?></textarea>
</li>
<input class="btn btn-default"type="submit" name="button" id="button" value="Submit" />
</ul>
<?php echo isset($success)?$success:''; ?>
</form>
正如您所看到的,使用header('Location: index.php#5');
添加可能的解决方案会使我的网站回到联系表单(不完全是我想要的,但有所帮助),但它打破了$success='<h1>Thank you!</h1>';
。
使用AJAX有没有简单的方法(使用我的原始代码)?因为我不习惯使用脚本。
另一方面,可以是展示$success='<h1>Thank you!</h1>';
的解决方案,并使函数header('Location: index.php#5');
在同一表单上工作吗?
答案 0 :(得分:0)
使用标题并重定向页面。
header("Location:your_page.php");
您可以重定向到同一页面或不同页面。
或
<?php
session_name("fancyform");
session_start();
$_SESSION['n1'] = rand(1,20);
$_SESSION['n2'] = rand(1,20);
$_SESSION['expect'] = $_SESSION['n1']+$_SESSION['n2'];
if(isset($_SESSION['sent']))
{
unset($_SESSION['sent']);
header('Location: index.php?msg=sucess');
}
if ( isset($_GET['msg']) && $_GET['msg'] == 'sucess' )
{
$success='<h1>Thank you!</h1>';
}
答案 1 :(得分:0)
答案 2 :(得分:0)
你可以试试这个: -
使用会话
if(isset($_SESSION['sent']))
{
unset($_SESSION['sent']);
$_SESSION['thanks_msg'] = 'Thank You';
header('Location: index.php#5');
}
?>
在index.php文件中: -
检查是否设置了$ _SESSION ['thanks_msg'],如果设置则显示会话消息。
使用GET方法: -
if(isset($_SESSION['sent']))
{
$success='Thank you!';
unset($_SESSION['sent']);
header('Location: index.php?msg='.$success);
}
?>
在index.php文件
上if(isset($_GET['msg']))
{
echo $_GET['msg'];
}
编辑: -
if(isset($_SESSION['sent']))
{
$success='Thank you!';
unset($_SESSION['sent']);
header('Location: index.php?msg='.$success);
}
?>
在index.php文件
上if(isset($_GET['msg']))
{
echo $_GET['msg'];
}