ajax异步提交 有时会出现无bug的数据处理异常-----debug没有问题
发布时间:2020-12-16 02:59:17 所属栏目:百科 来源:网络整理
导读:ajax ?被使用时,常默认的就使用了异步处理。 当遇到后面的代码对同样的数据进行处理 或 要依赖前面ajax处理的结果时,就会导致数据处理结果不正确,未达到预期值。 且,debug时却能正常完成功能,得到预期值。再就是多次测试,又有很少的机会会出现正确数据
ajax ?被使用时,常默认的就使用了异步处理。 当遇到后面的代码对同样的数据进行处理 或 要依赖前面ajax处理的结果时,就会导致数据处理结果不正确,未达到预期值。 且,debug时却能正常完成功能,得到预期值。再就是多次测试,又有很少的机会会出现正确数据结果。 ? 这就是ajax异步和同步的问题, debug时 程序一直处于同步的过程中执行代码。所以设置的异步被无效化,看不到数据处理的异样。 不debug时,就会出现数据处理的顺序不对,导致结果不对。 解决方法就是将ajax的属性async ?改为 false ?即:同步 ? //jquery的async:false,这个属性 //默认是true:异步,false:同步。 function submit_adjust(){ $.ajax({ type: "post",url: basePath + "/provinceKpi/submitAdjust.do",contentType: "application/json; charset=utf-8",data:JSON.stringify($(‘#form_dialog‘).serializeObject()),dataType: ‘JSON‘,async: false,success: function (data) { alert("调整成功,并记录!"); },error: function () { alert(‘调整数据提交失败‘); },complete: function () { } }); } //调整按钮的点击事件 function adjustment(){ BootstrapDialog.show({ title: ‘kpi数据调整‘,size :BootstrapDialog.SIZE_WIDE,message: $(‘<div></div>‘).load(basePath + ‘/provinceKpi/dialog/adjust_dialog.do‘,{limit: 25},function(data){ }),buttons: [ { label: ‘确认调整‘,action: function(dialog) { if(confirm("确认调整?")){ submit_adjust(); dialog.close(); $("#grid").bootstrapTable(‘refresh‘); } } },{ label: ‘关闭‘,action: function(dialog) { dialog.close(); } }] }); } //上面代码是我在开发中遇到的 /*先调用submit_adjust()方法,然后 接着又刷新了列表,这两个方法处理的是同一个表的数据,如果ajax采用了默认的异步就会出现数据处理错误的现象*/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |