为了使表单记住以前的输入或用户的当前输入,即使他/她刷新了页面,该怎么办?
我应该这样做, <div class="row">
<label>Contact Messenger </label>
<input type="text" name="messenger" id="messenger" size="50" maxlength="50" value="<?php echo $_SESSION['messenger']; ?>"/>
</div>
或
<div class="row">
<label>Contact Messenger </label>
<input type="text" name="messenger" id="messenger" size="50" maxlength="50" value="<?php echo $_POST['messenger']; ?>"/>
</div>
或
有一个技巧吗?怎么样?
答案 0 :(得分:13)
在表单提交的页面上执行类似的操作
session_start();
$_SESSION['data'] = $_POST['data'];
$_SESSION['data_another'] = $_POST['data_another'];
并且您可以在任何类似的地方访问这些会话变量
session_start(); // this should be at the top of the page before any html load
<input type="text" name="name" value="<?php echo $_SESSION['data'];?>"/>
在此成功通话中刷新您的网页
$.ajax({
type: "POST",
url: "yourfile.php",
data: 'data='+ data,
success: function(){
location.reload();
}
});
答案 1 :(得分:3)
我在我的一个项目中遇到过类似的问题所以我写了一些js来处理这个问题。 首先,我找到了两个简单的函数来设置和获取cookie值:
function setCookie(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
function getCookie(c_name) {
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1) {
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1) {
c_value = null;
} else {
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1) {
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start, c_end));
}
return c_value;
}
我写了两个其他函数来设置和获取输入值:
function saveValue(input) {
var name = input.attr('name');
var value = input.val();
setCookie(name,value);
}
function getValue(input) {
var name = input.attr('name');
var value = getCookie(name);
if(value != null && value != "" ) {
return value;
}
}
使用jQuery我将用户的输入值保存到会话cookie
$('input[type=text]').each(function(){
var value = getValue($(this));
$(this).val(value);
}).on('blur', function(){
if($(this).val() != '' ) {
saveValue($(this));
}
});
我希望它会有所帮助;)
答案 2 :(得分:2)
这完全取决于字段中数据的来源。 如果您的场景是您正在呈现一个空白表单,用户输入一些数据然后不提交它,刷新页面,您无能为力。这是由浏览器来处理的。
你可能会在那里做一些非常奇怪的JavaScript黑客攻击,但我不建议这样做。
另一方面,如果您的数据来自上一页或类似的内容,那就是另一回事。但是你需要告诉我们数据的来源,所以我可以给你一个合理的答案。
答案 3 :(得分:1)
如果您的意思是,填写表单字段并单击刷新,则没有直接的方法,因为数据未提交。这种行为取决于浏览器。
您可以做的唯一事情是在字段更改时通过AJAX将数据发布回您的服务器。接收数据的PHP脚本会设置一些会话变量。加载表单时,您可以将其默认值设置为适当的会话值。
很少有需要这种行为。将有许多请求来回发送到您的服务器。
答案 4 :(得分:0)
您的任何建议都不会帮助您在刷新后“记住”数据(不向服务器发送数据的操作)。你需要的是通过javascript(也许使用onkeyup事件类型)获取数据并使用cookie获取它。使用jquery非常容易。
答案 5 :(得分:0)
会话是存储和记忆数据的好方法,但为什么会使事情变得复杂?考虑表单是否包含许多字段,开发人员必须在会话中存储大量值。为什么不简单地打印或回声。
示例:
使用输入ssName和隐藏字段ssAct提交表单,其值为send
在表单提交上获取ssName和ssAct
$ssAct=$_REQUEST["ssAct"];
$ssName=$_REQUEST["ssName"];
和表格
<input type="text" name="ssName" value="<?php if($ssAct=='send' && $ssName!='') { echo "$ssName"; } ?>">
<input type="hidden" name="ssAct" value="send">
提交名称将在提交时回显,且不为空。
答案 6 :(得分:0)
尝试使用属性autocomplete
,也许它可以在某些浏览器上运行...
<input type="text" autocomplete="on" />
您也可以为form
使用自动填充功能。
答案 7 :(得分:0)
要检查一些主要问题,以便在刷新或任何事件处理程序后显示数据:
1)注意签名。它必须包含方法=&#34; post&#34;属性如下:
<form method="post"/>
否则使用$ _POST [&#39;信使&#39;]将无效。
表单中method属性的默认值为get。
<form> equals to <form method="get">
2)许多程序员在属性 id 与 name 之间进行混合。 请注意使用正确的属性。 $ _POST关联数组使用名称从中获取数据。这就是为什么下一个示例无法正常工作:
<input type="text" id="data" value="<?php echo isset($_POST['data']) ? $_POST['data'] : "" )?/>"
要使其正常工作,您必须添加属性名称=&#34;数据&#34;如下:
<input type="text" name="data" id="data" value="<?php echo isset($_POST['data']) ? $_POST['data'] : "" )?/>"
祝你好运
答案 8 :(得分:0)
您也可以不使用以下代码进行会话:
<input type="text" name="Fname" value="<?php if(isset($_POST['Fname'])){ echo $_POST['Fname']; } ?>" /><br/>
这会将输入框内的输入数据保留下来!
答案 9 :(得分:0)
将详细信息发布到会话中后,在值中输入以下内容
<?php print $_SESSION['messenger'] ?>
如果您在同一文件中同时编写php和HTML,则可以这样做
<?php print $messenger] ?>