我试图让接收基于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)。
请注意,该代码仍然是完全的,我刚刚用了,而这部分代码现在挣扎,现在仍然如此。希望能帮到你。非常感谢提前。
您的回路来存储数据只是覆盖同一组数组元素的每次迭代中,我将介绍如何在第一个可以做到的,你应该能够工作了其他人。
每次它使用[]
添加内容(在一个分配),我也使用空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']++;
}