在web项目中防止用户刷新页面插入重复数据是开发人员必须考虑的异常情况之一。我的解决方法是当用户完成添加操作之后,将url指向查询action。例如:用户执行完添加操作时地址栏中的url如下:http://127.0.0.1:8080/MijItem/admin/logisticsAction!addLogisticsSendInfo.action
此时,要让它转到从一览画面点击修改后执行的那个方法:http://127.0.0.1:8080/MijItem/admin/logisticsAction!toEditLogistics.action。采用的方法是ajax提交后指向查看action。具体代码如下:
function addSendInfo(){
var delegate_id = $.trim($('#delegate_id').val());
var logisticNO = $.trim($('#logisticNO').val());
var carryNo = $.trim($('#carryNoForest').val());
if($("#sForm").valid()){
$.ajax({
type:"POST",
url:"admin/logisticsAction!checkCarryNo.action",
data: {carryNoForest:carryNo,delegate_id:delegate_id,logisticNO:logisticNO,pageCurr:pageCurr},
dataType: "text",
success:function(html){
if(html=="success"){
$.ajax({
type:"POST",
url:"admin/logisticsAction!addLogisticsSendInfo.action",
data: {delegate_id:delegate_id,logisticNO:logisticNO,},
dataType: "text",
success:function(html){
if(html=="success"){
$("#sForm").attr("action","<%=contextPath%>/admin/logisticsAction!toEditLogistics.action");
$("#sForm").submit();
} else {
jqDialog.alert("<s:text name='struts.webui.logistics.label.OperationFailedPleaseTryLater'/>");
}
}
});
} else {
jqDialog.alert("<s:text name='struts.webui.logistics.label.carryNoExists'/>");
}
}
});
}
}
后台方法执行成功后返回success字符串,ajax判断成功后执行toEditLogistics.action并将表单提交。如果执行失败,弹出操作失败消息框。这样处理既可以防止页面刷新插入重复数据,也可以根据后台返回的字符串做排他判断。