此分类是用AJAX做的,分享一下,希望共同交流;以下是三级的,直接上代码:
一:一个js文件,一个php显示页,有三个数据php页(分别代表一二三类);
二:原理是:html文件里的有onchang事件,每次触发这个onchang事件就会调用js文件,js里的函数会从三个php页获取到数据,然后返回html显示。
三:1》、三个php页的数据差不多;
如下:p_item.php
include_once("../configs/configs.php");//配置文件(包含类)
$m=new sql("cp");
$row=$m->select();//获取到的数据放到数组中(方法不一)
foreach($row as $value)
{
$str.=$value[name].','.$value[id].'|';
}
if(!$str)//判断如果下一级分类为空就不显示下拉列表
{
exit();
}else
{
echo $str;//js要从这获取的数据
}
?>
如下:s_item.php
include_once("../configs/configs.php");//配置文件(包含类)
$b=explode(",",$_GET['city']);//分离从第一个页获取到的id
$m=new sql("cp");
$m->where('id=$b[1]'); //根据条件查询
$row=$m->select(); //存数组
foreach($row as $value)
{
$str.=$value[name].','.$value[id].'|';
}
if(!$str)//判断如果下一级分类为空就不显示下拉列表
{
exit();
}else
{
echo $str;//js要从这获取的数据
}
?>
如下:c_item.php
include_once("../configs/configs.php");//配置文件(包含类)
$b=explode(",",$_GET['diqu']);//分离从第一个页获取到的id
$m=new sql("cp");
$m->where('id=$b[1]'); //根据条件查询
$row=$m->select(); //存数组
foreach($row as $value)
{
$str.=$value[name].','.$value[id].'|';
}
if(!$str)//判断如果下一级分类为空就不显示下拉列表
{
exit();
}else
{
echo $str;//js要从这获取的数据
}
?>
2》js文件:fenlei.js
// JavaScript Document
function createRequest(){
var
request;
if(window.XMLHttpRequest){ // For Mozilla, Safari, ...
request = new XMLHttpRequest();
} else
if(window.ActiveXObject){ // For Internet Explorer
request = new ActiveXObject("Microsoft.XMLHTTP");
}
return
request;
}
//一级
function getCity(){
var
ajax=createRequest();
var url =
"p_item.php";
ajax.open("GET",url,true);//AJAX异步传输机制
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 &&
ajax.status==200) {
updatePageCity(ajax.responseText);
}
}
ajax.send(null);
}
function updatePageCity(str){
//alert(123);//检测用看弹出来的信息
var str1 = new Array();
if(str!=""){
str1 =str.split("|");//分割字符串
//strs
=str.split(",");
document.getElementByIdx_x_x("city").options[0]=new Option("-请选择一级类-",
" ");
for(var
i=0;i
Option(str1[i],str1[i]);
}//循环生成要在下拉列表中现实的数据
}
}
//二级获取
function getDiqu(){
var
ajax=createRequest();
var
city=document.getElementByIdx_x_x("city").value;
var url =
"s_item.php?city="+city;//加上参数获取到的id
ajax.open("GET",url,true);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 &&
ajax.status==200) {
updateDiqu(ajax.responseText);
}
}
ajax.send(null);
}
function updateDiqu(str){
alert(str);
if(str=="")
{
document.getElementByIdx_x_x("diqu").style.display="none";//显示下拉列表为隐藏 } else
{
document.getElementByIdx_x_x("diqu").style.display="block";//显示下拉列表为展开
var str1 = new Array();
str1 =str.split("|");
document.getElementByIdx_x_x("diqu").options[0]=new
Option("-请选择二级类-", " ");
for(var i=0;i
document.getElementByIdx_x_x("diqu").options[i+1]=new
Option(str1[i],str1[i]);
}
}
}
//三级获取ZXS
function getzxs(){
var
ajax=createRequest();
var
diqu=document.getElementByIdx_x_x("diqu").value;
var url =
"c_item.php?diqu="+diqu;
ajax.open("GET",url,true);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 &&
ajax.status==200) {
updatezxs(ajax.responseText);
}
}
ajax.send(null);
}
function updatezxs(str){
alert(str);
if(str=="")
{
document.getElementByIdx_x_x("zxs").style.display="none";
} else
{
document.getElementByIdx_x_x("zxs").style.display="block";
var str1 = new Array();
str1 =str.split("|");
document.getElementByIdx_x_x("zxs").options[0]=new
Option("-请选择三级类-", " ");
for(var i=0;i
//str2=str1[i].split(",");
document.getElementByIdx_x_x("zxs").options[i+1]=new
Option(str1[i],str1[i]); }
}
}
3》、php显示文件:
如下:ceshi.php
/p>
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
无标题文档method="post">
>
style="display:none">
value="添加">
value="重置">
四:以上就是三级分类的例子,原是从别人那里借鉴过来的,然后加上自己的修改,如果想要做成无限级分类,只要依次依次递加即可,很简单,欢迎交流。