问题描述:
在做项目的过程中,碰到了如下一个问题,花了我两天的时间、、、⊙﹏⊙b汗
问题起因:由于在项目中使用的是Jquery Ajax保存的表单,现在页面上有如下两个表单:
form,和subform,
其中form中的主要内容是几个checkbox和文本框
subform中的主要内容是三个文件上传框
后台jQuery代码如下:
function submitAdminForm2(formName) {
clearError();
if(isNaN($("#pdaysvalue").val())){
alert("Please enter number for Person days! ");
return false;
}
frm = document.getElementById(formName);
frmsub = document.getElementById(formName + "sub");
var options = {
//target: "#errormessage",
success: showResponse, // post-submit callback
error: function(XMLHttpRequest, textStatus, errorThrown) {
location.href = "../../error/c500Error.jsp?exception=clear";
}
};
if(frmsub == null) {
$(frm).ajaxForm(options);
$(frm).submit();
} else {
//if($("#logo1").val() != null && $("#logo1").val() != ""||
// $("#applogo1").val() != null && $("#applogo1").val() != ""||
// $("#char1").val() != null && $("#char1").val() != ""
// ) {
$("#hiddenlogo1").val($("#logo1").val());
$("#hiddenapplogo1").val($("#applogo1").val());
$("#hiddenchar1").val($("#char1").val());
$(frm).ajaxForm(options);
$(frm).submit();
//}
$(frmsub).ajaxForm(options);
$(frmsub).submit();
}
}
现在症状如下:
当点击保存的时候(由于项目的特殊性,数据都是保存在对应目录下的configurator_XX.properties文件中而非保存在数据库中),每当在form中上传本地图片文件后,点击【save】后保存结果是正确的,但是当我点击【clean logo】按钮后再点击【save】发现数据文件configurator_XX.properties会被覆盖掉,仅仅只是保存当前的几个结果,但是这个时候如果进行debug的话,这个现象是不会重现,但当在非debug时,又会出现这个问题,分析过后台的业务逻辑并没有出现错误。
后来经过高人指点由于jQuery Ajax是异步执行的,这个时候由于提交的两个form如果不是在同步执行的情况下就会出现以上现象,因此,在上面的代码处添加一行:(用红色标记):
var options = {
//target: "#errormessage",
async:false,
success: showResponse, // post-submit callback
error: function(XMLHttpRequest, textStatus, errorThrown) {
location.href = "../../error/c500Error.jsp?exception=clear";
}
};
至此,该错误宣告结束O(∩_∩)O~
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0028/3382/1c0f9401-72cf-370f-a013-c49e8b3b25e9-thumb.png)
- 大小: 41.3 KB
分享到:
评论