不确定我在这里做错了什么,但我有以下AJAX功能。 console.log(make_id);
工作正常,但data: {make:make_id},
似乎无法传递给/get_models.php - 这行代码$make_id = $POST['make'];
$(document).ready(function() {
$("#select_make").change(function() {
var make_id = $(this).val();
console.log(make_id);
$.ajax({
url: '/car_clearance_form/get_models.php',
type: 'post',
data: {
make: make_id
},
dataType: 'json',
success: function(response) {
console.log(response);
var len = response.length;
$("#select_model").empty();
for (var i = 0; i < len; i++) {
var model_id = response[i]['model_id'];
var model_name = response[i]['model_name'];
$("#select_model").append("<option value='" + model_id + "'>" + model_name + "</option>");
}
}
});
});
});
这是get_models.php的代码
我收到以下错误PHP Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
。 $sql
似乎返回false,因为$make_id
没有从AJAX函数传递任何东西
<?php
include "config.php";
$make_id = $POST['make'];
$sql = "SELECT model_name, model_id FROM models WHERE make_id = ".$make_id;
$result = mysqli_query($con, $sql);
$models_array = array();
while ($row = mysqli_fetch_array($result) ) {
$model_id = $row['model_id'];
$model_name = $row['model_name'];
$models_array = array("model_id" => $model_id, "model_name" => $model_name);
}
// encoding array to JSON format
echo json_encode($models_array);
?>
答案 0 :(得分:2)
有几个问题:
1)正如BeingSunny所指出的,$POST['Make']
是一个错字,应该是$_POST['make']
2)正如BeingSunny和我指出的那样,当你说你的console.log是 &#34; ...只返回$ models_array&#34; 中的最后一项,实际上并非如此。
真正的问题是$ models_array只有包含数据库结果中的最后一项。 console.log正在准确报告它给出的内容。其根本原因是每次循环运行时$models_array = array("model_id" => $model_id, "model_name" => $model_name);
都会覆盖$ models_array变量。
$models_array[] = array("model_id" => $model_id, "model_name" => $model_name);
将解决这个问题,因为它会向数组添加一个新条目,而不是完全删除整个变量。
另请注意我的评论是您对SQL注入攻击的漏洞。虽然这与问题没有直接关系,但它肯定是一个你应该紧急解决的问题。
答案 1 :(得分:-4)
尝试将“make”放在引号内,以便代码变为:
$(document).ready(function() {
$("#select_make").change(function() {
var make_id = $(this).val();
console.log(make_id);
$.ajax({
url: '/car_clearance_form/get_models.php',
type: 'post',
data: {'make':make_id},//here
dataType: 'json',
success:function(response) {
console.log(response);
var len = response.length;
$("#select_model").empty();
for(var i = 0; i<len; i++) {
var model_id = response[i]['model_id'];
var model_name = response[i]['model_name'];
$("#select_model").append("<option
value='"+model_id+"'>"+model_name+"</option>");
}
}
});
});
});