【问题标题】:fill dropdown basis on another dropdown在另一个下拉列表的基础上填充下拉列表
【发布时间】:2015-06-08 16:26:29
【问题描述】:

我正在尝试使用 ajax 在 php 中的另一个组合框基础上填充组合框。我创建了两个文件 category_dropdown.php 和 subcategory_dropdown.php。

我的 category_dropdown.php 文件如下。

<?php
include 'connect.php';
$q = mysql_query("select * from category") or die(mysql_error());
if (mysql_num_rows($q)) {
$data = array();
while ($row = mysql_fetch_array($q)) {
$data[] = array(
'id' => $row['category_id'],
'name' => $row['category_name']
);
}
header('Content-type : application/json');
echo json_encode($data);
}

我的 subcategory_dropdown.php 文件如下。

<?php
include 'connect.php';
if(isset($_GET["catname"])){
$c=$_GET["catname"];
$q=  mysql_query("select * from subcategory where cat_id='$c'") or         die(mysql_error());
if(mysql_num_rows($q)){
$data=array();
while($row=  mysql_fetch_array($q)){
$data[]=array(
'id'=>$row['sub_id'],
'name'=>$row['sub_name'],
);
}
header('Content-type : application/json');
echo json_encode($data);
}else{
echo 'error';
}
}

然后我使用了 javascript 来填充组合框

<script type="text/javascript">
    $(document).ready(function() {
        Category();
        $("#cat").change(function() {
            var textbox3 = document.getElementById('cat');
            val = textbox3.value;
            Sub(val);
        });
    });


    function Category() {
        $('#cat').empty();
        $('#cat').append("<option>Loading....</option>");
        $('#subcat').append("<option>--Select SubCategory--</option>");
        $.ajax({
            type: "POST",
            url: "category_dropdown.php",
            contentTYpe: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
                $('#cat').empty();
                $('#cat').append("<option value='0'>--Select Category--</option>");
                $.each(data, function(i, item) {
                    $('#cat').append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
                });
            },
            complete: function() {}
        });
    }

    function Sub(catname) {
        $('#subcat').empty();
        $('#subcat').append("<option>Loading....</option>");
        $.ajax({
            type: "POST",
            url: "subcategory_dropdown.php?catname=" + catname,
            contentTYpe: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
                $('#subcat').empty();
                $('#subcat').append("<option value='0'>--Select SubCategory--</option>");
                $.each(data, function(i, item) {
                    $('#subcat').append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
                });
            },
            complete: function() {}
        });
    }
</script>

但是当我运行这个函数时,我的第一个下拉框(category_dropdown.php)没有填满。它只显示“正在加载......”。

为什么会这样。我有问题的地方。 请帮忙。

【问题讨论】:

  • PHP 代码是否返回任何错误?您应该使用 JS 控制台来检查返回的内容并能够对其进行调试。
  • 嗨,当我尝试运行 category_dropdown.php 时,它什么也没返回。输出为 null。我认为这是问题所在。你知道为什么会这样吗?
  • 现在我收到一个错误“已弃用:mysql_connect():mysql 扩展已被弃用,将来将被删除”我在 stackoverflow 中阅读了一些关于此的文章。我很困惑,因为我使用了这个我计算机中另一个项目的相同代码。它运行良好。但这不是。怎么可能?
  • 这里是关于弃用函数的解释:stackoverflow.com/questions/6822446/…。它不会阻止您的代码工作,但如果您升级 PHP 版本,这可能是一个问题。最好开始使用另一个功能/扩展。 stackoverflow.com/questions/12859942/…

标签: javascript php ajax


【解决方案1】:

我的建议是首先运行您的查询并测试您的 SQL。如果您知道您的 SQL 正在运行,那么我将测试您的 PHP 并通过设置一些静态测试变量来确保逻辑正常运行。如果这有效,那么您很可能知道您的 AJAX 调用。也尝试按照 caCtus 的建议在浏览器中运行控制台窗口。 JS 控制台可以成为救命稻草。一开始可能看起来有点乏味,但排除每个技术层是值得的,因为它可以更好地隔离和识别问题所在。

【讨论】:

  • 现在我收到一个错误“已弃用:mysql_connect():mysql 扩展已被弃用,将来将被删除”我在 stackoverflow 中阅读了一些关于此的文章。我很困惑,因为我使用了这个我计算机中另一个项目的相同代码。它运行良好。但这不是。怎么可能?
  • 您是否在之前的项目中使用了不同的版本?您也可能正在使用与 mysql_connect(); 冲突的最新 PHP 版本的语法或功能。在不知道这两个项目是如何配置的情况下,很难提供一个准确的答案。
  • no im using same version in both projects . actually these codes are copied from previous project. i dont 知道发生了什么。我尝试仅在 index.php 中使用 php 手动填充组合框。然后它正在工作。但它不适用于 category_dropdown.php 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 2018-02-03
  • 2014-04-10
  • 1970-01-01
相关资源
最近更新 更多