【发布时间】:2016-05-18 11:25:43
【问题描述】:
我知道使用 isset()、$_POST 和 $_GET 的组合我做错了,但我想知道解决我的问题的最简单和轻松的方法是什么。
当我提交 HTML 表单时会出现问题...它会重新加载包含发布数据的页面。我使用 php isset() 函数捕获提交,处理 $_POST 数据,然后运行 window.location 以使用一些 $_GET 数据刷新页面。
例如...
//example.php
...
<form action="" method="post">
<input name="stage1name" type="text" class="textfield" size="22" value="<?php echo $ClaimRow['ClaimantName']; ?>">
<input name="VehicleEngine" type="text" class="textfield" size="20" value="<?php echo $vehiclerow['VehicleEngine']; ?>">
<input name="VehicleFuel" type="text" class="textfield" size="20" value="<?php echo $vehiclerow['VehicleFuel']; ?>">
<input name="submitInfo" type="submit" value="<?php echo $LANG_Claims_Change_Info; ?>" />
</form>
...
<?php
if (isset($_POST['submitInfo']))
{
$stage1name= mysqli_real_escape_string($db, $_POST['stage1name']);
$VehicleEngine= mysqli_real_escape_string($db, $_POST['VehicleEngine']);
$VehicleFuel= mysqli_real_escape_string($db, $_POST['VehicleFuel']);
mysqli_query($db, "DO SOME COOL SQL HERE");
//I've done what I need to do so lets reload the page with the updated data
echo "<script>window.location='example.php?vehicle=" . $vehicleID . "&claimTab=Personal'</script>";
}
?>
就像我之前说的,这种方法效果很好,但是用户得到了“双重负荷”的效果,并且非常容易诱发癫痫。
任何想法如何最好地解决这个问题?
谢谢
编辑 - 附加示例
我意识到这个例子可能没有完全的意义,所以我把另一个例子放在一起,希望可以。
...
<form action="" method="post">
<select name="addresstype[]" id="multiselectfrom" onchange='this.form.submit();' size="9" style="width:110px; text-align:center;">
<option style="<?php if ($AddType == 'Claimant') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Claimant"><?php echo $LANG_Claims_Claimant; ?></option>
<option style="<?php if ($AddType == 'Vehicle') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Vehicle"><?php echo $LANG_Claims_Vehicle; ?></option>
<option style="<?php if ($AddType == 'Repairer') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Repairer"><?php echo $LANG_Claims_Repairer; ?></option>
<option style="<?php if ($AddType == 'Insurer') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Insurer"><?php echo $LANG_Claims_Insurer; ?></option>
<option style="<?php if ($AddType == 'Fleet') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Fleet"><?php echo $LANG_Claims_Fleet; ?></option>
</select>
</form>
...
<?php
if (isset($_POST['addresstype']))
{
foreach ($_POST['addresstype'] as $addresstype) {
$addresstype2 = $addresstype;
}
echo "<script>window.location='claims.php?claimID=" . $claim . "&claimTab=Addresses&AddressType=" . $addresstype2 . "'</script>";
}
?>
上面的例子应该是获取表单的结果,并根据表单结果更改 window.location。它确实有效,但是这样做会加载页面两次。
【问题讨论】:
-
header('Location: example.php?vehicle=' . $vehicleID . '&claimTab=Personal');然后die(); -
您再次在同一页面上发送数据
example.php,我没有看到以查询字符串的形式在参数中发送值的任何用途。 -
添加 die();在 window.location 之后没有做任何事情,因为它已经自我杀死了。 A-2-A 我相信我的例子不是一个很好的例子。我将发布另一个示例,也许它会更有意义。
-
为什么不使用 ajax jquery ?
-
你能举个例子吗?我将 ajax 用于一些表格内容,但我不是 100% 使用 ajax。