最近遇到一个需求,需要通过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>