头一回把代码写成这样(thinkphp5.0),自己都不知道获取到的json数组已经是几维,但是前台使用js解析的过程中还是蛮辛苦的,大致流程如下:

-代码工作流程:

  1. -get到相应界面后,ajax异步访问后台服务器;

  2. -服务器接收post请求查询对应数据,查询的结果为两个结果集封装在一个json数组中,数组每项为一个object对象,每个对象含有两个子对象,其中一个子对象包含多个不定子对象(我自己都晕);

  3. -ajax回调函数收到json数据后,多个嵌套循环解析数据,插入文档DOM元素。

上js代码:

<script>
$(function () {
$.ajax({
type:"post",
url:"{:url('Index/zjbbdata')}",
dataType:'json',
success:function(data){
//console.log(data['result'][0].category.CategoryName);
$.each(data['result'],function (i,item) {
$.each(data['result'][i],function (j,item2) {
//接收到json数据result[category];
//console.log(item2);
if(Object.prototype.toString.call(item2)!='[object Array]')//item2为数组时跳过append();
{
$(".main").append(' <div class="pinholder" style="height: 26px;">\
<div class="pin">\
<div class="tit">\
<h2>'
+item2.CategoryName+'</h2>\
<span>'
+item.app.length+'款产品</span></div>\
</div>\
</div>'
);
}//第一次判断数组结束

//console.log(item3);
if(Object.prototype.toString.call(item2)=='[object Array]')//item3为数组时执行append();
{
$.each(data['result'][i],function (n,item3) {
//console.log(item3);
$.each(data['result'][i][n],function (m,item4) {
//console.log(item4);
if(typeof (item4)=='object') //判断item4此时为对象;
{
$(".main").append('<div class="lists">\
<ul>\
<li class="app-item link" data-href="#" data-sid="77208" data-asin="">\
<div class="list-img">\
<img src="/public/static/images/'
+item4.Pic+'" alt=""></div>\
<div class="list-cont">\
<div class="lt-c-tit">\
<h2>\
<a href="http://app.so.com/zjbb/#nogo">'
+item4.AppName+'</a></h2>\
<span>13.71MB</span></div>\
<div class="lt-c-s-n">\
<div class="lt-c-s-n-l">\
<div class="star">\
<p style="width: 88%;"></p>\
</div>\
</div>\
<span>'
+item4.DownloadCount+'万次下载</span></div>\
</div>\
<div class="btns">\
<a class="dl-btn js-downloadBtn" href="#">\
<span></span>下载</a>\
</div>\
</li>\
</ul>\
</div>'
)
}
})//item4循环结束;
});//item3循环
}//第二次判断数据结束;
});//item2循环
});//item循环
}
});
});
</script>

上php代码:

public function zjbbdata()
{

$cate=db('category')->select();
foreach($cate as $n=> $val){
$con['CategoryID']=$val['CategoryID'];
$apps[$n]=db('apps')->alias('a')->where($con)->order("DownloadCount DESC")->limit(5)->select();
$data[$n]=array(
'category'=>$val,
'app'=>$apps[$n],
);
}
//var_dump($data[10]);
return (array( 'result'=>$data,'status'=>1, 'msg'=>'获取成功!'));
}

更多相关文章

  1. Jquery禁用/启用按钮与文本框代码
  2. 推荐web 前端代码的编辑分享平台——RunJS
  3. 将php jsonencode数组结果显示为ajax成功函数
  4. 如何使用XMLHttpRequest向服务器发送数组
  5. 想要改进我的jQuery代码,做我想要的,太丑了,IMO
  6. JQuery的一些基本功能代码(CH1&2)
  7. 如何让代码等待好/取消按钮选择?
  8. 【JavaScript】jQuery+ajax传递json数组(局部响应处理)
  9. 创建一个未排序的数组,其中包含重复元素和唯一元素的总和

随机推荐

  1. jquery中的mouseenter实现理解
  2. VBA中的错误处理
  3. 在Javascript中将带有空格的字符串数组转
  4. chai-as-promised:单个测试中的多个期望语
  5. 如何使用Knockout从vm设置会话变量?
  6. 如何测试一个点是否是二次Bézier曲线的
  7. 在ExtJS中调用超类方法的更好方法
  8. 浅析JS中的 map, filter, some, every, f
  9. jQuery选择器,用于查找与选择器匹配的给定
  10. 嵌套水平滑块与单击控件