最近遇到一个需求,需要通过ajax传递多条数据到html页面中,但在传递过程中发现,数据死活传递不过来,老是进不去success方法中。后来查资料发现原来是,多条josn对象已经破坏了原来的json格式数据,所有进不去success,以下代码分别是PHP和js源码供大家参考:

public function ajax_link(){
     $nowseconds=time();
     $controllerArr = $this->doorModle->where('joinstatus=1')->getField('controllerno,jointime',true);//关键就是这个true
     foreach ($controllerArr as $key => $value) {
         if((time()-$value)<10){
         // echo json_encode(array('type'=>'yes','id'=>$key));//这种方法最后生成多个json对象,而且把原来的json格式打乱了,无法跳转到success方法中
           $totalarr[] = array('type'=>'yes','id'=>$key);//采用二维数组来传递
       }else{
         $this->doorModle->where('controllerno='.$key)->save(array('joinstatus'=>0));
         // echo json_encode(array('type'=>'no','id'=>$key));
         $totalarr[] = array('type'=>'no','id'=>$key);
       }
     }
     $checkArr = $this->doorModle->where('joinstatus=2')->getField('controllerno',true);//关键就是这个true
     foreach ($checkArr as $key => $value) {
         // echo json_encode(array('type'=>'check','id'=>$value));
       $totalarr[] = array('type'=>'check','id'=>$value);
     }
     echo json_encode($totalarr);
   }

js源码,这种方法是更换每行数据的一部分,通过id

   setInterval ("showlink()", 5000);//d定时器
       function showlink(){
         $.ajax({
           type:"POST",
           url:'index.php?m=Admin&c=Doorcontroller&a=ajax_link',
           data:"id="+'',
           dataType:'json',
           success: function (data) {
           if(data!=null){//注意数据不能为空
             for (var i = 0; i < data.length; i++) {//遍历数据
               if(data[i].type=='yes'){
                 $("#"+data[i].id).empty();
                 $("#"+data[i].id).append("<span class='label label-info'>连接中</span>");
               }else if(data[i].type=='no'){
                 $("#"+data[i].id).empty();
                 $("#"+data[i].id).append("<span class='label label-danger'>未连接</span>");
               }else{
                 $("#"+data[i].id).empty();
                 $("#"+data[i].id).append("<img src='/Public/Default/img/load.gif'  width='38%;'>");
               }
             }
            }
           },
         });
       }

html代码

         <td id={$vo.controllerno}>
                       <if condition="$vo.joinstatus eq 0 ">
                         <span class="label label-danger">未连接</span>
                       <elseif condition="$vo.joinstatus eq 1 "/>
                         <span class='label label-info'>连接中</span>
                       <else /> <img src="/Public/Default/img/load.gif"  width="38%;">
                       </if>
                       </td>