商品类型的下拉框绑定一个事件,通过ajax获取属性
阅读原文时间:2023年07月08日阅读:3

html代码这么写

// 为商品类型的下拉框绑定一个事件,通过AJAX获取属性
$("select[name=Goods[type_id]]").change(function(){
// 获取ajax获取这个类型的所有的属性
var type_id = $(this).val();
if(type_id == 0)
{
$("#attr_container").html("");
return false;
}
$.ajax({
type: "GET",
url : "__CONTROLLER__/ajaxGetAttrByTypeId/type_id/"+type_id,
dataType: "json",
success : function(data)
{
// 处理服务器返回的json数据
// 循环每一个属性,拼成一个li的字符串,最后放到上面的ul中
// 以下语法相当于PHP中的: foreach($data as $k => $v):
var li = "";
$(data).each(function(k,v){
li += "

  • "; li += v.attr_name + " : "; /********* 根据属性的类型生成一个不同的表单元素 **************/ if(v.attr_type == 0) { // 唯一属性 if(v.attr_option_value == "") li += ""; else { // 先把可选值转化成一个数组 var _attr = v.attr_option_value.split(","); li += ""; } } else { li += "[+]"; // 单选属性 // 先把可选值转化成一个数组 var _attr = v.attr_option_value.split(","); li += ""; } li += "¥元"; li += "
  • ";
    });
    // 把构造好的LI放到UL中
    $("#attr_container").html(li);
    }
    });
    });

    在控制器中这么写

    public function ajaxGetAttrByTypeId($type_id){
    $attrModel=M('attribute');
    $data=$attrModel->where('type_id='.$type_id)->select();
    echo json_encode($data);
    }