php - 将子类别添加到下拉列表的代码不起作用

标签 php mysql ajax

我有一个用于将产品添加到网站的表单。 该表单包含 2 个下拉框,一个用于类别,一个用于子类别。当您在第一个类别中选择一个类别时,第二个类别应该填充与其关联的子类别。 Cats 和 subcats 来自 2 个 mysql 表。 类别可以加载到第一个框中,但是当我选择一个时,没有子目录加载到第二个下拉列表中!!

这是我的表单和用于加载子猫的ajax

<form class='adminform1' action='add_products.php' method='post' enctype='multipart/form-data' name='image_upload_form' id='image_upload_form'>
            <?php
               include '../inc/categorydropdown.php';
                ?>
               <span class='formheading'>Add Product</span><br /><br />
               <p><b>Choose Image</b><br /><input name="image_upload_box" type="file" id="image_upload_box"  /></p>
               <b>Name</b><br /><input type=text name="aname" /><br />
               <b>Description</b><br /><textarea rows="12" cols="40" name="adescription"></textarea><br />
               <b>Price</b><br /><input type=text name="aprice" /><br />
               <b>Product Code</b><br /><input type=text name="acode" /><br />
               <p><label for="cat">Category</label>
               <select name="cat" id="cat">
                  <?php echo $op;?>   
               </select><br />
               <label for="subcat">Subcategory</label>
              <select name="subcat" id="subcat"> </select></p>
              <br />
              <br />
              <input type='submit' id='submit' name='submit' value='Add Product' />
              <input type='hidden' value='new' /><br />

        </form>
       <script>
         //bind category dropdown change event
         $('#cat').change(function(){
            getSubCat();
         });
         //change subcat dropdown
        function getSubCat(){
           cat = $('#cat').val();
           $.post("../inc/subcat.php", { cat: cat }).done(function(data) {
              $('#subcat').html(data);
           });
        }
        //run on page load
        getSubCat();
      </script>

这是我的 php,用于生成发送到 ajax 代码的子目录。

<?php
include 'connect.php':
if(isset($_POST['cat'])){
$cat = intval($_POST['cat']);
$query = "SELECT subcat_id, subcategory FROM `subcategories` WHERE cat_id = $cat";
$result = $link->query($query) or die('error');
$subcatOps = '';
if(mysqli_num_rows($result)){
    while ($row = mysqli_fetch_assoc($result)) {
        $subcatOps .= "\n\t<option value='{$row['subcat_id']}'>{$row['subcategory']}</option>";
    }

}
echo $subcatOps;
?>

谁能看出问题所在吗?

谢谢

最佳答案

@koala_dev 对于如何进行调试是正确的。但乍一看,假设您的 $.post 调用访问了正确的 URL,{ cat: cat } 应该是 { 'cat': cat }

JSON 中的键必须用引号引起来,以避免需要对保留关键字进行另一次转义:https://stackoverflow.com/questions/949449/json-spec-does-the-key-have-to-be-surrounded-with-quotes

关于php - 将子类别添加到下拉列表的代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023999/

相关文章:

php - WordPress wpdb->插入/更新不工作

mysql - Rails & MySQL - 如何在 rails 中的 find_by_sql 中使用 LIKE 运算符和 %?

mysql - 不支持关键字

java - 带有 Java 的动态 SQL 查询

javascript - 山魈 "reject_reason":"unsigned"

javascript - 如何使用Ajax将模型发送到 Controller ,而不使用表单?

php - PhantomJS 挂了很长时间说 "Asynchronous Sessions clean-up phase starting NOW"

php - Laravel - 如何在两个表的内部循环但不连接表

php - Behat Mink 文件上传在提交时未找到文件

javascript - ASP.NET ajax 控件工具包 ModalPopupExtender 问题与 div 溢出