阿贾克斯/ JSON只返回PHP / SQL文件1分的结果 - 无法找到解决方案

问题描述 投票:0回答:1

我试图让接收基于AJAX / JSON返回从另一个文件在那里我有一个PHP While循环数组数据,但它只返回1点的数据而已。我有11行显示。

我试图在谷歌,YouTube和许多其他地方寻找什么,我做错了。我使用最新版本的jQuery和jQuery UI的。我曾尝试阅读在不同的地方的console.log数据,我也试图与不同的名称。依然没有。

HTML:

$HTMLOUT .= '<div class="container">';
    $HTMLOUT .= '<h4 class="text-center mt-3">Quick Search</h4>';
    $HTMLOUT .= '<form>';
        $HTMLOUT .= '<div class="form-row py-3">';
            $HTMLOUT .= '<div class="col-12 col-md-3">';
                $HTMLOUT .= '<select id="AJAX_ID_category" class="custom-select custom-select-sm">';
                    //$HTMLOUT .= '';
                $HTMLOUT .= '</select>';
            $HTMLOUT .= '</div>';
            $HTMLOUT .= '<div class="col-12 col-md-3">';
                $HTMLOUT .= '<select id="AJAX_ID_brand" class="custom-select custom-select-sm">';
                    //$HTMLOUT .= '';
                $HTMLOUT .= '</select>';
            $HTMLOUT .= '</div>';
            $HTMLOUT .= '<div class="col-12 col-md-3">';
                $HTMLOUT .= '<select id="AJAX_ID_model" class="custom-select custom-select-sm">';
                    //$HTMLOUT .= '';
                $HTMLOUT .= '</select>';
            $HTMLOUT .= '</div>';
            $HTMLOUT .= '<div class="col-12 col-md-3">';
                $HTMLOUT .= '<button type="submit" class="btn btn-danger" name="FORM_NAME_submit">Quick Search</button>';
            $HTMLOUT .= '</div>';
        $HTMLOUT .= '</div>';
    $HTMLOUT .= '</form>';
$HTMLOUT .= '</div>';

PHP:

// (index.php) = Quick Search > Categories
if(isset($_POST['action']) && $_POST['action'] == "get_categories") {
    //header('Content-Type: application/json'); // not needed, but a good idea to set!
    $connect = mysqli_connect("localhost","root","","backup_job_v1_www_oppulense_com_backup_1");
    $sql = "SELECT * FROM vehicle_category";
    $result = mysqli_query($connect, $sql);
    $json = array();
    $json['ARRAY_get_categories']['count_total_returns'] = 0;
    //while($row = mysqli_fetch_array($result)) {
    while($row = mysqli_fetch_assoc($result)) {
        $json['ARRAY_get_categories']['id'] = $row['category_id'];
        $json['ARRAY_get_categories']['name'] = (!$row['category_name'] == NULL ? $row['category_name'] : "None");
        $json['ARRAY_get_categories']['count_total_returns']++;
    }
    echo json_encode($json);
}

// (index.php) = Quick Search > Brands
if(isset($_POST['action']) && $_POST['action'] == "get_brands_from") {
    header('Content-Type: application/json'); // not needed, but a good idea to set!
    $connect = mysqli_connect("localhost","root","","backup_job_v1_www_oppulense_com_backup_1");
    $sql = "SELECT * FROM vehicle_brand WHERE v_b_FK_category_id = ".$_POST['id_cat']."";
    $result = mysqli_query($connect, $sql);
    $json = array();
    while($row = mysqli_fetch_array($result)) {
        $json['ARRAY_get_brands']['id'] = $row['brand_id'];
        $json['ARRAY_get_brands']['name'] = (!$row['brand_name'] == NULL ? $row['brand_name'] : "None");
    }
    echo json_encode($json);
}

// (index.php) = Quick Search > Models
if(isset($_POST['action']) && $_POST['action'] == "get_models_from") {
    //header('Content-Type: application/json'); // not needed, but a good idea to set!
    // Models
}

jQuery的:

var base_route = "";
$(document).ready(function() {
    get_categories();
});
function get_categories() {
    var items = "<option selected value=''>SELECT CATEGORY</option>";
    $.ajax({
        type: "POST",
        url: base_route+"inc/ajax-handler.php",
        data: {action:"get_categories"},
        dataType: 'JSON',
        success:function(response){
            if(response != null){
                $.each(response, function(index, value){
                    console.log(index);
                    console.log(value);
                    if(value.name != 'None'){
                        items+="<option value='"+value.id+"'>"+value.name+"</option>";
                    }
                });
                $("#AJAX_ID_category").html(items);
            }
        }
    });
}
function get_brands_from(category){
    var items = "<option selected value=''>SELECT BRAND</option>";
    $.ajax({
        type: "POST",
        url: base_route+"inc/ajax-handler.php",
        data: {action:"get_brands_from", id_cat:category},
        dataType: 'JSON',
        success:function(response){
            if(response != null){
                $.each(response, function(index, value){
                    console.log(index);
                    console.log(value);
                    if(value.name != 'None'){
                        items+="<option value='"+value.id+"'>"+value.name+"</option>";
                    }
                });
                $("#AJAX_ID_brand").html(items);
                $("#AJAX_ID_brand").selectmenu('refresh', true);
            }
            //$("#AJAX_ID_model").html("<option selected value=''>SELECT MODEL</option>");
            //$("#AJAX_ID_model").selectmenu('refresh', true);
        }
    });
}
function get_models_from(category, brand){
    var items = "<option value=''>Select a Model</option>";
    $.ajax({
        type: "POST",
        url: base_route+"inc/ajax-handler.php",
        data: {action:"get_models_from", id_cat:category, id_brand:brand},
        dataType: 'json', success:function(response){
            if (response != null){
                $.each(response, function(index, value){
                    console.log(index);
                    console.log(value);
                    if(item.name.indexOf(' in ') < 0){
                        items+="<option value='"+value.name.split(' ').join('-').toLowerCase()+"'>"+value.name+"</option>";
                    }
                });
                $("#AJAX_ID_model").html(items);
                $("#AJAX_ID_model").selectmenu('refresh', true);
            }
        }
    });
}
$( "#AJAX_ID_category" ).selectmenu({
    change: function( event, ui ){
        var category = $(this).val();
        get_brands_from(category);
    }
});
$( "#AJAX_ID_brand" ).selectmenu({
    change: function( event, ui ){
        var brand = $(this).val();
        var category = $("#sel_category").val();
        get_models_from(category, brand);
    }
});
$( "#AJAX_ID_model" ).selectmenu({
    change: function( event, ui ){
        var model = $(this).val();
        window.location.href = location.href+"car/"+model
    }
});

我有3个不同的选择/选项的HTML框。我想提取的类别,品牌和车辆。在第一个下拉菜单,类别,我希望只提取每个类别有运行AJAX。我未能够做到这一点。它给我1个结果,不返回其他任何东西,甚至寿我知道我在MySQL数据库(phpMyAdmin的)11点不同的行。

选定的类别后,我希望显示在未来选择行选项,基于从类别,一旦品牌品类现在已经选择了ID,我想展现基于两个编号的课程的车辆。在这种情况下,现在是从类别和品牌标识。

一旦车辆已被选择,然后,我会像提交按钮出现在淡入通过jQuery的形式。

当提交按钮被击中,用户应该被重定向到的页面(details.php?ID = X)。

请注意,该代码仍然是完全的,我刚刚用了,而这部分代码现在挣扎,现在仍然如此。希望能帮到你。非常感谢提前。

php jquery sql json ajax
1个回答
2
投票

您的回路来存储数据只是覆盖同一组数组元素的每次迭代中,我将介绍如何在第一个可以做到的,你应该能够工作了其他人。

每次它使用[]添加内容(在一个分配),我也使用空COALESCE(??)设置名称...

while($row = mysqli_fetch_assoc($result)) {
    $json['ARRAY_get_categories'][] = ['id' => $row['category_id',
                 'name' => $row['category_name'] ?? "None"];
    $json['ARRAY_get_categories']['count_total_returns']++;
}
© www.soinside.com 2019 - 2024. All rights reserved.