ajax异步提交 有时会出现无bug的数据处理异常-----debug没有问题,正常运行却数据处理不正确,极少机会会出现正常的处理结果

Posted to_be_your_cat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax异步提交 有时会出现无bug的数据处理异常-----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采用了默认的异步就会出现数据处理错误的现象*/

 



以上是关于ajax异步提交 有时会出现无bug的数据处理异常-----debug没有问题,正常运行却数据处理不正确,极少机会会出现正常的处理结果的主要内容,如果未能解决你的问题,请参考以下文章

原生AJAX如何异步提交数据?

JQuery中使用FormData异步提交数据和提交文件

ajax异步请求302分析

ajax利用FormData异步文件提交

ajax提交数据以后刷新当前页面,怎么实现

使用iframe实现页面无刷新提交表单