html - php串聯功能表不用ajax如何?

來源:互聯網
上載者:User

網站導航要實現的效果類似於:

我搜尋了,發現都是ajax發送請求實現聯動。我的要求是不發送請求,直接在php檔案或html檔案裡寫,再通過jquery實現下拉效果。
目錄導航的數組如下:level=0表示第1層,緊跟的level=1/2……表示是第1層的子功能表。

Array(    [0] => Array        (            [cat_id] => 3            [cat_name] => JavaScript            [parent_id] => 0            [level] => 0        )    [1] => Array        (            [cat_id] => 5            [cat_name] => Jquery            [parent_id] => 3            [level] => 1        )    [2] => Array        (            [cat_id] => 6            [cat_name] => JS進階            [parent_id] => 3            [level] => 1        )    [3] => Array        (            [cat_id] => 4            [cat_name] => PHP            [parent_id] => 0            [level] => 0        ))

html代碼如下:


  
  • 首頁
  • ">

回複內容:

網站導航要實現的效果類似於:

我搜尋了,發現都是ajax發送請求實現聯動。我的要求是不發送請求,直接在php檔案或html檔案裡寫,再通過jquery實現下拉效果。
目錄導航的數組如下:level=0表示第1層,緊跟的level=1/2……表示是第1層的子功能表。

Array(    [0] => Array        (            [cat_id] => 3            [cat_name] => JavaScript            [parent_id] => 0            [level] => 0        )    [1] => Array        (            [cat_id] => 5            [cat_name] => Jquery            [parent_id] => 3            [level] => 1        )    [2] => Array        (            [cat_id] => 6            [cat_name] => JS進階            [parent_id] => 3            [level] => 1        )    [3] => Array        (            [cat_id] => 4            [cat_name] => PHP            [parent_id] => 0            [level] => 0        ))

html代碼如下:


  
  • 首頁
  • ">

不用ajax,一次把所有資料都讀出來,但是hide show 的效果必須要js了,有幾種方法,可以php裡把資料做成json,在js裡調用show hide,也可以直接把全部array先在頁面上顯示成link預設hide,然後根據點哪個show哪個。

---下面是把array先在頁面上產生html,但是根據不同class值來判斷show/hide
把每層都查出來,把原來用0、1、2的array key 改成用每組資料的屬性當做可以,如下:

array(    'l1' => array(        key1 => value1,        key2 => value2,        key3 => value3    ),    'l2' => array(        key1 => value1,        key2 => value2,        key3 => value3    )    .......);

給每層array key都附上值,全部產生出來,根據key value 不同在link上產生不同的class,預設全部hide,然後click哪個按鈕就顯示哪個吧,幾個if elseif else搞定,因為每組資料都有key了,可以簡單地判斷哪個按鈕對應那組資料。

在顯示之前把它們都查出來,只是用js預設不顯示它們,等點擊再顯示它們

不是很明確你的意思,是要實現這樣無限級樹形菜單麼?

                             3, "cat_name" => "JavaScript", "parent_id" => 0, "level" => 0),            Array("cat_id" => 5, "cat_name" => "Jquery", "parent_id" => 3, "level" => 1),            Array("cat_id" => 6, "cat_name" => "JS進階", "parent_id" => 3, "level" => 1),            Array("cat_id" => 7, "cat_name" => "JS進階更進階1", "parent_id" => 6, "level" => 3),            Array("cat_id" => 8, "cat_name" => "JS進階更進階2", "parent_id" => 6, "level" => 3),            Array("cat_id" => 9, "cat_name" => "JS進階更進階3", "parent_id" => 6, "level" => 3),            Array("cat_id" => 4, "cat_name" => "PHP", "parent_id" => 0, "level" => 0),            Array("cat_id" => 10, "cat_name" => "PHP進階1", "parent_id" => 4, "level" => 0),            Array("cat_id" => 12, "cat_name" => "PHP進階2", "parent_id" => 4, "level" => 0),            Array("cat_id" => 13, "cat_name" => "PHP進階3", "parent_id" => 4, "level" => 0)        );//建立樹形菜單        function createTree(&$arr, $parent_id) {            $hide = "";            if ($parent_id != 0) {                $hide = "hidden";            }            $funcName = __FUNCTION__;            $ul = "";            $li = "";            for ($i = 0; $i < count($arr); $i++) {                if ($arr[$i]["parent_id"] == $parent_id) {                    $child = $funcName($arr, $arr[$i]['cat_id']);                    $li .= "\r\n
  • {$arr[$i]["cat_name"]}{$child}
  • \r\n"; } } if ($li != "") { $ul = "
      {$li}
    "; } return $ul; } echo createTree($arr, 0); ?>

    1. 將所有的資料積極式載入進來,賦給一個js變數。每次選擇串聯功能表,都從這個變數讀取資料。
    2. 這樣做相當於把ajax分次請求的資料一次請求下來。

    php echo 一個json資料給js的變數

    預先在頁面中產生json格式資料,傳遞給js就可以了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.