2017-07-13 60 views
0

我試圖在選擇第一個選項後填充第二個下拉列表,第二個下拉列表中沒有任何內容出現。Onchange根據值填充不同的下拉列表

我的第一選擇:

<select name="inst" class="form-control" required="" id="inst"> 
    <option value=0 selected=1>Select...</option> 
    <?php 
     $sql="SELECT * FROM sapinst"; 
     $myData=mysqli_query($GLOBALS['con'],$sql); 
     if (mysqli_num_rows($myData) > 0){ 
      while ($row = mysqli_fetch_array($myData)) 
      { 
      echo '<option value="' .$row["nbd"]. '">' .$row["nome"]. '</option>'; 
      } 
     } 
     else{echo "No categories were found!";} 
     ?> 
</select> 

我的第二個選擇:

<select id= "sub" name="sub" class="form-control"></select> 

我的腳本:

<script type="text/javascript"> 
     $("#inst").change(function() { 
     //get category value 
     var cat_val = $("#inst").val(); 
     // put your ajax url here to fetch subcategory 
     var url = '/ajax.php'; 
     // call subcategory ajax here 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: { 
       cat_val: cat_val 
      }, 
      success: function (data) 
      { 
       $("#sub").html(data); 
      } 
     }); 
    }); 
</script> 

我Ajax.php文件:

<?php 
    require_once 'edp/configdbedp.php'; 

    $prod_cat = $_POST['cat_val']; 

    $sql = "SELECT * FROM " . $dbname . ".sappainel WHERE nbd = '$prod_cat'"; 
    $result = mysqli_query($conn, $sql); 
    $msg = ''; 
    if (mysqli_num_rows($result) > 0) { 
     while ($row = mysqli_fetch_array($result)) { 
      $msg =. '<option value="' . $row["nome"] . '">' . $row["nome"] . '</option>'; 
     } 
    } else { 
     $msg .= "No categories were found!"; 
    } 
    echo $msg; 
    mysqli_close($conn); 
?> 

如果我嘗試在Ajax php中打印某些東西,我不能...似乎ajax.php不會運行。 我是否正確地調用它?

+1

您對此條線路上的服務器端錯誤:'$味精=「。 '; '.'應該放在'=='之前,這樣你就可以擁有'$ msg。='';' ' –

+0

謝謝Masivuye,但第二個下拉列表繼續沒有任何東西 –

+0

你在第二個下拉菜單上得到什麼 –

回答

0

您的第二個ajax被正確調用? 檢查控制檯消息(在開發人員選項中,F12)ajax調用中的錯誤。

你可能想這樣做,因爲兩個cat_val是相同的。它可能會給出錯誤。 -

data: { 
    cat_val: cat_val_local //different variable names here. 
}, 

而且"Select * from $TABLE_NAME(not @dbname)" 和未來刪除多餘[點這裏 - >".sappainel WHERE"

你也可以嘗試把console.log()在成功回調,看看success正在返回的任何元素。

success: function (data) 
{ 
     console.log(data); 
     $("#sub").html(data); 
} 

如果什麼都沒有顯示,那麼你的php可能是錯誤的。添加一個eror回調呢!像這樣 -

error: function (e) 
{ 
     console.log(e); 
} 

希望這會有所幫助。

0

我已經解決了

個體差異的紙條:

<script type="text/javascript"> 
        $("#inst").change(function(){ 
         //get category value 
         var cat_val = $("#inst").val(); 
         // put your ajax url here to fetch subcategory 
         var url = 'ajax.php'; 
         // call subcategory ajax here 
         $.ajax({ 
            type:"POST", 
            url:url, 
            data:{ 
             cat_val : cat_val 
            }, 

            success:function(data) 
             { 
              $("#sub").html(data); 
             } 
            }); 
        }); 
      </script> 

在ajax.php

<?php 

require_once 'edp/configdbedp.php'; 

$prod_cat = $_POST["cat_val"]; 

$sql = "SELECT * FROM ".$dbname.".sappainel WHERE nbd = '$prod_cat'"; 
    $result = mysqli_query($GLOBALS['con'], $sql); 
$msg =''; 
    if (mysqli_num_rows($result) > 0){ 
     while ($row = mysqli_fetch_array($result)) 
     { 
     $msg .='<option value="'. $row["nome"] .'">'. $row["nome"] .'</option>'; 
     } 
    } 
    else{$msg .="No categories were found!";} 
    echo ($msg); 
    mysqli_close($GLOBALS['con']); 


?> 
相關問題