Ajax商品分類三級聯動的簡單實現(案例)

PC教程網】關于Ajax商品分類三級聯動的簡單實現(案例)_公私聯動案例介紹:思路分析: 效果:當頁面加載時,利用ajax異步向后臺請求數據,加載一級商品類別,當選擇一級商品時加載二級商品,選擇二級商品加載三級商品。 實現: 1、當拿到數據后加載pid為,下面小編為您針對Ajax商品分類三級聯動的簡單實現(案例)進行分享:

思路分析:

效果:當頁面加載時,利用ajax異步向后臺請求數據,加載一級商品類別,當選擇一級商品時加載二級商品,選擇二級商品加載三級商品。

實現:

1、當拿到數據后加載pid為0的商品,并動態創建option將商品追加到一級菜單中,并設置value值

2、當選擇一級商品時加載pid=當前id的商品,并創建option將商品追加到二級菜單中,并設置value值

3、當選擇二級商品時加載pid=當前id的商品,并創建option將商品追加到三級菜單中,并設置value值

頁面效果:

$(function(){
      //請求路徑
      var url="03goods.php";
      //option默認內容
      var option="<option value='0'>未選擇</option>";
      //獲取jq對象
      var $sel1=$(".sel1");
      var $sel2=$(".sel2");
      var $sel3=$(".sel3");
      //自動生成一個<option>元素
      function createOption(value,text){
        var $option=$("<option></option>");
        $option.attr("value",value);
        $option.text(text);
        return $option;
      }
      //加載數據
      function ajaxSelect($select,id){
        //get請求
        $.get(url,{"pid":id},function(data){
          $select.html(option);
          for(var k in data ){
            $select.append(createOption(data[k].id,data[k].name));
          }
        },"json");
      }

      //自動加載第一個下拉菜單
      ajaxSelect($sel1,"0");

      //選擇第一個下拉菜單時加載第二個
      $sel1.change(function(){
        var id=$sel1.val();
        if(id=="0"){
          $sel2.html(option);
          $sel3.html(option);
        }else{
          ajaxSelect($sel2,id);
        }
      });

      //選擇第二個下拉菜單時加載第三個
      $sel2.change(function(){
        var $id=$sel2.val();
        if($id=="0"){
          $sel3.html(option);
        }else{
          ajaxSelect($sel3,$id);
        }
      });
    });

后臺代碼:

<?php
  header('Content-Type:text/html; charset=utf-8');
  //數據
  $arr=array(
   //array(分類id,分類名,分類的父id)
   array('id'=>'1','name'=>'數碼產品','pid'=>'0'),
   array('id'=>'2','name'=>'家電','pid'=>'0'),
   array('id'=>'3','name'=>'書籍','pid'=>'0'),
   array('id'=>'4','name'=>'服裝','pid'=>'0'),
   array('id'=>'5','name'=>'手機','pid'=>'1'),
   array('id'=>'6','name'=>'筆記本','pid'=>'1'),
   array('id'=>'7','name'=>'平板電腦','pid'=>'1'),
   array('id'=>'8','name'=>'智能手機','pid'=>'5'),
   array('id'=>'9','name'=>'功能機','pid'=>'5'),
   array('id'=>'10','name'=>'電視機','pid'=>'2'),
   array('id'=>'11','name'=>'電冰箱','pid'=>'2'),
   array('id'=>'12','name'=>'智能電視','pid'=>'10'),
   array('id'=>'13','name'=>'編程書籍','pid'=>'3'),
   array('id'=>'14','name'=>'JavaScript','pid'=>'13'),
  );
  //獲取指定分類的商品
  function getByPid($arr,$pid){
    $result=array();
    foreach($arr as $v){
      if($v['pid']==$pid){
       $result[]=$v;
      }
    }
    return $result;
  }
  //獲取請求參數
  $pid=isset($_GET['pid'])?$_GET['pid']:'0';

  $result=getByPid($arr,$pid);
  //輸出json數據
  echo json_encode($result);
?>

以上這篇Ajax商品分類三級聯動的簡單實現(案例)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關教程

php ajax網站瀏覽統計功能的簡單實現第1/2頁

使用PHP語言實現,如果你看不明白,請留言.... 相信原理都差不多.. 為什么使用PHP做范例語言? 不外乎兩個因素: 1. PHP語法通俗易懂,有一點程序基礎的人就可以了解;2.代碼量比較少 本功能實 …

ajax.net +jquery 無刷新三級聯動的實例代碼

教程實例 代碼如下: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head title/title script src="Jquery1.7.js" type="te …

省市縣三級聯動的SQL語句

首先是建表語句 教程實例 代碼如下: CREATE TABLE `t_address_province` ( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主鍵', `code` CHAR(6) NOT NULL COMMENT '省份編碼', `name` VARCHAR(40) NOT NULL COMMENT '省份名稱' ) E …

JS三級可折疊菜單實現方法

本文實例講述了JS三級可折疊菜單實現方法。分享給大家供大家參考,具體如下: .ASPX代碼: %@ Page Language="C#" AutoEventWireup="true" CodeFile="NavigateMenu.aspx.cs" Inherits="NavigateMenu" %!DOCTYPE html P …

jquery ajax分頁插件的簡單實現

jquery ajax分頁插件的簡單實現

說到基于jQuery的ajax分頁插件,那我們就先看看主要的代碼結構: 1、首先定義一個pager對象: var sjPager = window.sjPager = { opts: { //默認屬性 pageSize: 10, preText: "pre", nextText: "next", firstText: "F …

最好用的省市二級聯動 原生js實現你值得擁有

復制代碼 代碼如下: script language=javascript cities = new Object(); cities['臺灣']=new Array('臺北','臺南','其他'); cities['馬來西亞']=new Array('Malaysia'); cities['北京']=new Array('北京'); cities['上海']=new Ar …

Lua面向對象編程之類的簡單實現方式

先來看一段程序: 教程實例 代碼如下: function create(name, id) local obj = { name = name, id = id } function obj:SetName(name) self.name = name end function obj:GetName() return self.name end function obj:SetId(id) self.id = id …

C++中sting類的簡單實現方法

String 在C++的學習生涯我中發現String類的功能十分強大,所以我們是很有必要模擬實現它的,況且在面試的時候模擬實現一個String類也是面試官經常會考的,但是因為外界因素的限制我們 …

C++11的for循環,以及范圍Range類的簡單實現

C++11支持range-based for循環。這是一個很方便的特性,能省挺多代碼。以下代碼就能很方便的遍歷vector中的元素,并打印出來: std::vectorint int_vec;int_vec.push_back(1);int_vec.push_back(2);//如果要修 …

内蒙古十一选五任五推荐号