最新消息: 新版网站上线了!!!

Yii+ajax+json练习

ajax + json 简直是完美搭档。  

好累,不想说了,看了好多ajax和json的博客,然后再yii下做了一个练习,感觉还是学到了点啥的。 

视图文件中的js代码:
<?php  Yii::app()->clientScript->registerCoreScript('jquery');  ?>
<script>
	$(function(){
		update();
	});
	count = 0;
	function update(){
		count++;
		$.ajax({
			url:"<?php echo $this->createUrl('update');?>",
			data:{"num":count},
			dataType:"json",
			cache:false,	
			success:function(data){
				var list=$("#list");
				var out = '';
				//alert(data[0].title);
				//遍历Json数据
				$.each(data,function(i){
					out+='<li><a href=./index.php?r=article/view&id='+data[i].aid+'>'+data[i].title+'</a></li>';
				});
				list.empty().html(out);
			}
		});
		if(count>6){
			count = 0;
		}	
	}
	setInterval(function(){
					update()
				}, 2000);
</script>
<div>
	<ul id="list">		
	</ul>
</div>
控制器里面对Ajax的处理:
	public function actionUpdate(){
		if(Yii::app()->request->isAjaxRequest){
			$count = (int)Yii::app()->request->getParam('num');
			$c = new CDbCriteria;
			$c->select = 'aid,title';
			$c->limit = $count;
			$c->order = "create_time DESC";
			$data = Article::model()->findAll($c);
			echo CJSON::encode($data);
		}
	}
关于返回的json数据的遍历,在网上差了一些资料,得到一个比较实在的遍历json数据例子,如下:

<script>
var a ={
    "sys_bb": [
        {
            "menu_name": "报   表1",
            "menus": [
                {
                    "menu_name": "库存"
                },
                {
                    "menu_name": "销售"
                }
            ]
        },
        {
            "menu_name": "报   表2",
            "menus": [
                {
                    "menu_name": "盘点"
                },
                {
                    "menu_name": "查库"
                },
                {
                    "menu_name": "查销售"
                }
            ]
        }
    ],
    "sys_cw": [
        {
            "menu_name": "财    务",
            "menus": [
                {
                    "menu_name": "收款统计"
                }
            ]
        }
    ]
};

 $(function(){
      
    $.each(a.sys_bb,function(i,n){
       
       $("#navigation").append(a.sys_bb[i].menu_name+"<br>");
        $.each(a.sys_bb[i].menus,function(i,n){
        
          $("#navigation").append("  "+n.menu_name+"<br>");
        });
        
    });
    
      $.each(a.sys_cw,function(i,n){
       
       $("#navigation").append(a.sys_cw[i].menu_name+"<br>");
        $.each(a.sys_cw[i].menus,function(i,n){
        
          $("#navigation").append("  "+n.menu_name+"<br>")
        });
        
    });
 });
</script>
<div id="navigation">
</div>




转载请注明:谷谷点程序 » Yii+ajax+json练习