菜单

很快解决ajax传递为空但显示在页面及啊undefined的题材

2018年11月15日 - Ajax

昨勾勒代码遇到一个题材,这个题材先也撞了,只不过那时以为简单即从未有过做呀笔记,结果昨天碰到还是要失去查百渡过,查百度又使摸好一阵子,所以就记下转。避免事后忘记。

当项目被遇多个ajax加载,loading加载出现问题,没有能够第一时间加载出来。

率先问题是这么的:自己所以ajax到动态的召开报表插入,从后台传回到一个靶的list集合,然后开展遍历动态的变动表格的实践。后台写的都没错的,结果表格小情节吧显示为undefined。后来自调试了一下发现ajax自动的拿为空的字段设成了undefined。

重在因是因:浏览器的渲染(UI)线程和js线程是排斥的,在尽js耗时操作时,页面渲染会被封堵掉。当我们实践异步ajax的时段从不问题,但当装为共同请求时,其他的动作(ajax函数后面的代码,还有渲染线程)都见面停止下来。即使自己之DOM操作语句是于倡议呼吁的面前无异词,这个合伙请求也会“迅速”将UI线程阻塞,不被它执行的年华。这就是是代码失效的由。

//这是修改后的ajax代码
 $("#ss").click(function(){
    var key = $("#firstname").val();
    if(key==''){

     alert("请输入内容查询!");
     return;
    }
    $.ajax({
    url:'${pageContext.request.contextPath}/door/searchBykey.do',
    type:'post',
    dataType:'json',
    data:{'key':key},
    success:function(data){

     $("table>tbody>tr").remove();
     for(var i=0;i<data.length;i++){
      var count = i+1;
      var doors = data[i].door;
      var str = doors.replace(/\#/g,"%23"); 
      $("table>tbody").append(
         '<tr><td>'+count+'</td>'+ 
         '<td>'+ (data[i].build==undefined?"":data[i].build)+'</td>'+
         '<td>'+ (data[i].room==undefined?"":data[i].room)+'</td>'+
         '<td>'+ (data[i].door==undefined?"":data[i].door)+'</td>'+
         '<td>'+ (data[i].conSn==undefined?"":data[i].conSn)+'</td>'+
         '<td style="width:131px;">'+
          '<button type="button" class="btn btn-success" data-toggle="modal" data-target="#myModal2" onclick="updatebutton('+str+')">'+"修改"+'</button>'+
         '<button type="button" class="btn btn-danger" onclick="delButton('+data[i].id+')">'+"删除"+'</button>'+
         '</td>'+ 
         '</tr>'
      );




     }


    },
    error:function(){
     alert("请求失败!");
    }
    });


   });

1.凡是拿同转移写成异步,并且把多单ajax请求嵌套在同。图片 1,在中标之后再度夺调用另外一个ajax请求,这样子就不见面为第一只请求先罢,把第二独请求loading给挡掉。

这个题材的解决方式充分简短
,就是用公的值判断一下是不是也undefined,如果也undefined的,就以之价值设置为空就好了

 

具体代码

图片 2

(data[i].room==undefined?"":data[i].room)

 

如上这首快速解决ajax传递为空但显示在页面及啊undefined的题材不怕是聊编分享给大家的全部内容了,希望会为大家一个参阅,也期待大家多支持脚本的寒。

2.是应用jquery的Deferred对象,jQuery在1.5版后,引入了Deferred对象,提供的特别有益于之广义异步机制。

你或许感兴趣的篇章:

端详而参照阮一峰先生的即时首文章http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html。

3.就此定时器setTimeout()
或者setinterval()函数去定时查看是否ajax都归成功。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图