ThinkPHP2.1模版使用笔记 - 模版嵌套/AJAX级联

最近项目用PHP,不太熟,用框架开发,熟悉过程中,记录下来,备查
 
标签库select标签使用
 
<tagLib name="html" />
<html:select options="productCategory" selected="prodCateId" first="选择分类" name="prod_cate_id" id="prod_cate_id" />
$Cate = D('ProductCategory');
$list = $Cate->field('prod_cate_id,prod_cate_name')->findAll();
foreach ($list as $vo){
    $groupList[$vo['prod_cate_id']] = $vo['prod_cate_name'];
}
$this->assign('productCategory',$groupList);
$this->assign('prodCateId','');
$this->display('edit');
 
<volist>标签的嵌套使用
 
<volist name="list" id="vo">
    {$vo.prod_cate_name}
    <volist name="vo['voo']" id="sub">
        {$sub.prod_cate_name}
    </volist>
</volist>
$Dao = M('ProductCategory');
$list = $Dao->where('ifnull(prod_cate_pid,0)=0')->order('prod_cate_order asc')->findAll();
$Sub = M('ProductCategory');
foreach ($list as $n=>$val)
{
    $list[$n]['voo']=$Sub->where('prod_cate_pid='.$val['prod_cate_id'])->select();
}
$this->assign('list',$list);
$this->display();
 
AJAX二级联动的实现
 
<script type="text/javascript" src="__ROOT__/public/scripts/jquery-1.7.1.min.js"></script> 
<script type="text/javascript">
function ajaxSelect(url,objone,objtwo,defval){
    var $s1=$(objone);
    var $s2=$(objtwo);
    $s1.change(function(){
        var curval = objone.options[objone.selectedIndex].value;
        $s2.html("");
        $("<option>").text("二级分类").val("").appendTo($s2);
        $.ajax({ 
             type: "POST", 
             url: url, 
             data: "catepid="+curval,
             dataType: 'json',
             success: function(obj){
                if(obj.data)
                {
                    $(eval(obj.data)).each(function(i,elm){
                        appendOptionTo($s2,elm.prod_cate_name,elm.prod_cate_id,defval);
                    });
                }
             }
        });
    }).change();
    function appendOptionTo(o,k,v,d){
        var opt=$("<option>").text(k).val(v);
        if(v==d){opt.attr("selected", "selected")}
        opt.appendTo(o);
    }
}
$(function(){
    ajaxSelect('__URL__/changeCategory',$('#cate_one').get(0),$('#cate_two').get(0),'{$vo.cate_two}');
});
</script>
<tagLib name="html" />
<html:select options="productCategory" selected="prodCateId" first="选择分类" name="cate_one" id="cate_one" /> 
<select name="cate_two" id="cate_two">
<option value="">二级分类</option>
</select>
 
public function changeCategory()
{
    $id= $_POST['catepid'];
    header("Content-type:text/html; charset=utf-8");
    $Cate = D('ProductCategory');
    $list = $Cate->field('prod_cate_id,prod_cate_name')->where('prod_cate_pid='.$id)->select();
    $this->ajaxReturn(json_encode($list),'','',0);
}
posted @   shaoyun  阅读(519)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示