我有下面的表格,它的工作正常但是当我使用F5刷新页面或者然后重新提交表单。
如何阻止在页面加载或刷新时自动提交表单。但即时使用它会在onchange
上提交。
我只使用它来更新数据库中的送货费用,如果我将从下拉列表中选择不同的区域。当我选择不同的区域时,它会更新数据库中的区域,但是当刷新页面时,它会选择列表中的第一行并自动提交表单并在数据库中更新该值。
cart_update_delivery.php
$uid = $_POST['area'];
$total = mysql_query("
update orders_temp
set area = '".$uid."'
where user_id = 1
");
.........
<script>
function submitForm(){
var val = document.myform.area.value;
if(val!=-1){
document.myform.submit();
}
}
</script>
<iframe name="q" style="display:none;"></iframe>
<form action="cart_update_delivery.php" method="post" target="q" name="myform">
<select onchange="submitForm();" name="area" data-placeholder="Select area" class="test">
<optgroup label="0001">
<option style="" value="1"> A</option>
<option style="" value="2"> B</option>
<optgroup label="0002">
<option style="" value="3"> C</option>
<option style="" value="4"> D</option>
</optgroup>
</select>
</form>
答案 0 :(得分:2)
您可以在提交
后重新加载页面<script>
function submitForm(){
var val = document.myform.area.value;
if(val!=-1){
document.myform.submit();
location.reload(true);
}
</script>
答案 1 :(得分:-1)
如果我理解正确,您应该检查是否有POST数据。否则,每次加载页面时都会重写db记录。
if (isset($_POST['area']))
{
$uid = $_POST['area'];
$total = mysql_query("
update orders_temp
set area = '" . $uid . "'
where user_id = 1
");
}
答案 2 :(得分:-2)
在php中,您可以在更新后使用http标头将浏览器转发到新页面。标题必须先发送。
header('Location: http://www.example.com/');
请参阅PHP: header