php
  • jquery
  • mysql
  • ajax
  • 2014-11-01 138 views 0 likes 
    0

    我意識到這是一個熱門話題,我已經閱讀了幾個例子,但由於某種原因,我不能讓我的AJAX代碼加載第二個PHP頁面,將觸發創建第二個下拉菜單。我正在使用名爲(page2.php)的測試頁來嘗試和調試,而不會讓我的網站的其他部分阻礙。有一個下拉選擇框從Mysql數據庫填充另一個

    頁面代碼如下所示。

    <?php include("db_connect.php"); 
    
    $query = 'SELECT * FROM db_class_catagories'; 
    $result = mysqli_query($dbconnection,$query); 
    ?> 
    
    <select id="primary_catagory" name="primary_catagory" onchange = "getData(this)"style="position:absolute;left:10px;top:10px;width:315px;height:20px;z-index:11;text-align:left;"> 
    <option value=''>Select</option> 
    <?php while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){ 
    echo "<option value='" . $row['primary_catagory'] . "'>" . $row['primary_catagory'] . " 
    </option>";} 
    ?> 
    </select> 
    
    <div id="get_catagory"></div> 
    
    <script> 
    function getData(dropdown) { 
        var catagory = dropdown.options[dropdown.selectedIndex].value; 
        var dataString = "primary_catagory="+catagory; 
    
    $.ajax({ 
        type: "POST", 
        url: "get_sub_catagory.php", // Name of the php files 
        data: dataString, 
        success: function(html) 
        { 
         $("#get_catagory").html(html); 
        } 
    }); 
    } 
    </script> 
    

    使用警報的我已經確定,下拉選擇至少達到的功能,但我的AJAX代碼不會正確地將其轉發到PHP頁面。

    生成第二個下拉列表的php頁面被稱爲get_sub_catagories.php幷包含以下內容。

    <?php 
    include("db_connect.php"); 
    if ($_POST) { 
        $primary_catagory = $_POST['primary_catagory']; 
        if ($primary_catagory != '') { 
         $query = "SELECT * FROM db_class_catagories WHERE primary_catagory=" . $primary_catagory; 
         $result1 = mysqli_query($dbconnection,$query); 
    
         echo "<select name='state'>"; 
         echo "<option value=''>Select</option>"; 
         while ($row = mysql_fetch_array($result1)) { 
          echo "<option value='" . $row['sub_catagory'] . "'>" . $row['sub_catagory'] . "  
    </option>";} 
         echo "</select>"; 
        } 
        else 
        { 
         echo ''; 
        } 
    } 
    ?> 
    

    函數被調用,但沒有數據被傳遞到get_sub_catagories.php頁面。我確定我的位置已經搞亂了,但我在AJAX上並不堅實,並將其用作我的教程。

    我認爲它這部分

     success: function(html) 
         { 
          $("#get_catagory").html(html); 
    

    但是我不知道什麼是錯的。

    感謝您的指點!

    UPDATE:

    香港專業教育學院解決了這個問題的第一部分,在這裏,它從來沒有發生到我的加載jQuery庫,我現在已經有

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    

    這現在返回下拉列表完成對象,但它沒有填充,但查詢顯示在調試(SELECT * FROM db_class_catagories WHERE primary_catagory =電子)

    +0

    一個快的想法:你可以使用網絡(過濾器僅XHR)選項卡在Chrome開發者工具來調試AJAX調用。標題選項卡顯示通過GET和POST傳遞的變量,預覽和響應選項卡以各種格式顯示響應。這會告訴你,如果ajax調用得到正確的參數並返回任何東西。 – xeo 2014-11-01 19:28:14

    +0

    當我按照你的建議做了這個錯誤,我重新訪問了代碼,但不能看到我自己的錯誤。未捕獲的ReferenceError:$未定義 – OJ102 2014-11-02 06:24:42

    +0

    是否可以在服務器上加載jquery,從而無法找到自己? – OJ102 2014-11-02 06:34:24

    回答

    0

    我懷疑它可能是你如何使用數據參數。看看Pass data from jQuery to PHP for an ajax post

    嘗試像

    $.ajax({ 
        type: "POST", 
        url: "get_sub_catagory.php", // Name of the php files 
        data: {'primary_catagory': dropdown.options[dropdown.selectedIndex].value}, 
        success: function(html) 
        { 
         $("#get_catagory").html(html); 
        } 
    }); 
    
    +0

    這似乎沒有任何顯着的效果,我知道它是一個基礎問題,但該部分的(html)和html。(html)發揮了重要作用角色?所有的網頁都是PHP,實際上我還沒有完全理解這個代碼,直到我得到這個版本的工作,我不能擴大它,以適應其最終目的! – OJ102 2014-11-02 06:09:38

    +0

    你在鉻開發工具的XHR視圖中看到了什麼?正在加載的頁面?有迴應嗎? – xeo 2014-11-02 21:32:20

    +0

    我發現了這個問題,我從來沒有意識到我需要加載一個jQuery庫來使用AJAX!一旦我在頁面上加載了所有的腳本更改生效!乾杯! – OJ102 2014-11-05 10:32:29

    相關問題