【问题标题】:Dependent Drop Down Jquery option list JSON error相关的下拉 Jquery 选项列表 JSON 错误
【发布时间】:2019-07-13 05:50:48
【问题描述】:

伙计们,我是 Jquery 和 Json 的新手,我正在尝试使用 Jquery 创建一个从属选项列表,但它不起作用。我期待着你的帮助。 这是我的 HTML 代码..

<div class="form-group">
    <label for="categoriesId">
        Categories</label>
    <select class="form-control" id="categoriesId" name="categoriesId">
        <option selcted="">Select
            Categories</option>
        <?php                   
            getCat();
        ?>
    </select>
</div>

我的fetchProductDta.php页面代码在这里

<?php   
    require_once 'db_connect.php';
    if(isset($_POST['cid'])){
        $sql = "SELECT product_id, product_name 
             FROM product WHERE categories_id = '". $cid 
             ."'";
        $result = $connect->query($sql);
        while($product = $productData->fetch_array()) {                                     
             echo "<option value='".$product['product_id']."'> 
                 ".$product['product_name']."</option>";
       }  
    }
?>

我的 Jquery 代码在这里

$(document).ready(function () {
    $("#categoriesId").change(function () {
        var cid = $("#categoriesId").val();
        $.ajax({
            url: 'fetchProductData.php',
            method: 'POST',
            data: 'cid' + cid
                .done(function (product) {
                    console.log(product);
                    product = json.parse(product);
                    product.forEach(function (products) {
                        $('#product').appned();
                    });
                });
        });

【问题讨论】:

  • fetchProductDta.php 返回的是 HTML 而不是 JSON。
  • 当我使用 json_encode();它让我遇到了这个意外的 json 解析错误。 @NigelRen 你能帮忙解决吗?

标签: php jquery json ajax mysqli


【解决方案1】:

在你的jquery中你有错误,首先你从服务器获得html response,正如Nigel Ren所说。所以,你不需要使用json.parse。另外我在您的 html 代码中没有找到任何名称为 product 的 ID。jquery 中没有 appned 函数。因此,请在您的代码中进行以下更改以使其正常工作。

  $(document).ready(function () {
     $("#categoriesId").change(function () {
            var cid = $("#categoriesId").val();
            $.ajax({
                url: 'fetchProductData.php',
                method: 'POST',
                data: {cid : cid },
                     success:function(data){

                $("#product").html(data);//here response from server will be display in #product



                 }
                    });
            });

【讨论】:

  • 感谢您的友好回复。我尝试了您的代码,但我的错误是它不起作用。当我选择归档的类别但在下一个归档中没有获取数据时。这是我的#product id html " "
  • 在你的 php 代码中 -> $product = $productData-&gt;fetch_array() 它应该是 $product = $result-&gt;fetch_array() 因为你在 $result 中获取所有行。另外你没有获取 $cid 你直接在查询中传递它.您的查询应该是这样的-> SELECT product_id, product_name FROM product WHERE categories_id = '". $_POST['cid'] ."'
  • 非常感谢,但我已经更改了我的 php 代码,我尝试使用这个,但输出仍然相同 require_once 'db_connect.php'; if(isset($_POST['cid'])){ $sql = "SELECT product_id, product_name FROM product WHERE categories_id = '". $_POST['cid'] ." ' "; $result = $connect->query($sql); while($product = $result->fetch_array()) { echo "" ; } }
  • 我检查了网页是否有此错误 -->POST http://chatworld.xyz/drop.php 500 (Internal Server Error) 表示服务器端有问题(php 文件)
  • 我不明白发生了什么,即使我更改了我的所有脚本 php 这个下拉菜单让我很生气!需要一次'db_connect.php'; if(!empty($_POST["cid"])){ $query = $db->query("SELECT * FROM product WHERE categories_id = ".$_POST['cid']." AND active = 1"); $rowCount = $query->num_rows; if($rowCount > 0){ echo ''; while($row = $query->fetch_assoc()){ echo '' ; } } else { echo '';回声}}
猜你喜欢
  • 2019-02-26
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 2012-08-29
  • 2011-05-24
  • 1970-01-01
相关资源
最近更新 更多