利用php+jQuery+ajax实现汽车车型四级联动下拉菜单

本文主要是介绍利用php+jQuery+ajax实现汽车车型四级联动下拉菜单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


今天再向大家展示一个php、jQuery、ajax的实例。呵呵~~本身这个实例没有多少技术含量,哈哈~~有技术含量的是这个车型库的数据~~嘿嘿~~想当初也采集了好长时间才搞定的呢~
经常来的朋友应该还记得《PHP判断一个请求是AJAX请求还是普通请求》这篇文章吧。
这次这个汽车车型四级联动下拉菜单的应用中就有关于判断请求来源的应用。在DEMO中会有说明。

首先来展示一下效果图:

利用php+jQuery+ajax实现汽车车型四级联动选择

利用php+jQuery+ajax实现汽车车型四级联动选择



利用php+jQuery+ajax实现汽车车型四级联动下拉选择在线实例  http://www.skygq.com/2011/01/19/利用phpjqueryajax实现汽车车型四级联动下拉菜单/

下面我就直接贴出代码了:不敢兴趣的就直接略过吧^_^
首先看HTML代码:

< label for = "level_one" >车辆类型: </ label >
< select id = "level_one" name = "level_one_id" onchange = "car_type_search(this, 'level_two','level_three','level_four' ,'2')" >
     < option value = "" >选择车辆类型</ option >
     < option value = "1" >轿车</ option >
     < option value = "2" >商务车/MPV</ option >
     < option value = "3" >越野车/SUV</ option >
     < option value = "4" >面包车</ option >
     < option value = "5" >跑车</ option >
     < option value = "6" >皮卡</ option >
     < option value = "7" >客车</ option >
     < option value = "8" >货车</ option >
</ select >
< label for = " level_two " >车型品牌: </ label >
< select id = "level_two" name = "level_two_id" onchange = "car_type_search(this,'level_three','level_four','','3')" >
     < option value = "" >选择车型品牌</ option >
</ select >
< label for = "level_three" >品牌车系:</ label >
< select id = "level_three" name = "level_three_id" onchange = "car_type_search(this,'level_four','','','4')" >
     < option value = "" >选择车系</ option >
</ select >
< label for = "level_three" >具体车型:</ label >
< select id = "level_four" name = "level_four_id" >
     < option value = "" >选择车型</ option >
</ select >

?

Javascript代码:

function car_type_search(select_obj,first_dom_id,second_dom_id,third_dom_id,level){
var $base_select = $(select_obj);
var position = $base_select.offset();
var $select1 = $("#"+first_dom_id);
$select1.find("option:not(:first)").remove();
if (second_dom_id != ""){
var $select2 = $("#"+second_dom_id);
$select2.find("option:not(:first)").remove();
}
if (third_dom_id != ""){
var $select3 = $("#"+third_dom_id);
$select3.find("option:not(:first)").remove();
}
if ($base_select.val() != ""){
var $tip=$('#ajax_image');
$tip.css("display","");
$tip.css("top",position.top).css("left",position.left);
$.getJSON(base_url + "car_setup/car_type_search.html?id=" + $base_select.val() + "&level=" + level,function(data){
var option_html = "";
$.each(data,function(entryIndex,entry){
if(level == 2){
option_html += "<option value='"+entry.id+"'>"+entry.first_letter + " " + entry.name+"</option>";
}else if(level == 3 || level == 4){
option_html += "<option value='"+entry.id+"'>"+entry.name+"</option>";
}
});
$select1.append(option_html);
$tip.css("display","none");
});
}
}

PHP代码:(注意:我用的是CI框架,在数据库调用这块是实用了CI的mysql类库)

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] == site_url("car_setup")){//判断请求地址以及判断是否为ajax提交
    $id = $this->input->get('id');
    $level = $this->input->get('level');
    if ($level == 2){
        $array = array();
        $array[] = array('id'=>'','name'=>'国产','first_letter'=>'');
        $level_two_guochan_list = $this->db->from("car_setup")->where("father_id",$id)->where("country",0)->order_by("first_letter ASC,name ASC")->get();
        $level_two_jinkou_list = $this->db->from("car_setup")->where("father_id",$id)->where("country",1)->order_by("first_letter ASC,name ASC")->get();
        if ($level_two_guochan_list->num_rows() > 0){
            foreach ($level_two_guochan_list->result() as $level_two_obj){
                $array[] = array(
                    'id'            => $level_two_obj->id,
                    'name'          => $level_two_obj->name,
                    'first_letter'  => $level_two_obj->first_letter
                );
            }
            $level_two_guochan_list->free_result();
        }
        $array[] = array('id'=>'','name'=>'进口','first_letter'=>'');
        if ($level_two_jinkou_list->num_rows() > 0){
            foreach ($level_two_jinkou_list->result() as $level_two_obj){
                $array[] = array(
                    'id'            => $level_two_obj->id,
                    'name'          => $level_two_obj->name,
                    'first_letter'  => $level_two_obj->first_letter,
                    'sort_order'    => $level_two_obj->sort_order
                );
            }
            $level_two_jinkou_list->free_result();
        }
        echo json_encode($array);
        exit;
    }elseif ($level == 3 || $level == 4){
        $array = array();
        $level_three_list = $this->db->from("car_setup")->where("father_id",$id)->order_by("sort_order ASC")->get();
        if ($level_three_list->num_rows() > 0){
            foreach ($level_three_list->result() as $level_two_obj){
                $array[] = array(
                    'id'            => $level_two_obj->id,
                    'name'          => $level_two_obj->name,
                    'first_letter'  => $level_two_obj->first_letter,
                    'sort_order'    => $level_two_obj->sort_order
                );
            }
            $level_three_list->free_result();
        }
        echo json_encode($array);
        exit;
    }
}else{
    echo "哈哈~非ajax请求都被拒绝!";
}




最后附上表car_setup的数据结构


CREATE TABLE `ci_car_setup` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(80) NOT NULL,
  `father_id` int(11) NOT NULL,
  `level` int(2) NOT NULL,
  `country` tinyint(1) default '0',
  `first_letter` char(1) default NULL,
  `sort_order` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `father_id` (`father_id`)
) ENGINE=MyISAM AUTO_INCREMENT=68470 DEFAULT CHARSET=utf8

呵呵~现在的表里有68470条数据呢~~

这篇关于利用php+jQuery+ajax实现汽车车型四级联动下拉菜单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/ybhjx/article/details/51560333
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/725450

相关文章

golang 对象池sync.Pool的实现

《golang对象池sync.Pool的实现》:本文主要介绍golang对象池sync.Pool的实现,用于缓存和复用临时对象,以减少内存分配和垃圾回收的压力,下面就来介绍一下,感兴趣的可以了解... 目录sync.Pool的用法原理sync.Pool 的使用示例sync.Pool 的使用场景注意sync.

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

golang中slice扩容的具体实现

《golang中slice扩容的具体实现》Go语言中的切片扩容机制是Go运行时的一个关键部分,它确保切片在动态增加元素时能够高效地管理内存,本文主要介绍了golang中slice扩容的具体实现,感兴趣... 目录1. 切片扩容的触发append 函数的实现2. runtime.growslice 函数gro

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

Kali Linux安装实现教程(亲测有效)

《KaliLinux安装实现教程(亲测有效)》:本文主要介绍KaliLinux安装实现教程(亲测有效),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载二、安装总结一、下载1、点http://www.chinasem.cn击链接 Get Kali | Kal