各位大大 因为不熟卡了很久 所以想请教大家
我去实作了 看起来比较简单的 简易版PHP +AJAX下拉选单
我大致针对我的资料表 修改了SQL语法
第一层下拉选单 用数据库查询出来没问题
也大概知道原理是
第二层选单GET第一层选单选取的值 当作SELECT的条件 再将查询出来的结果回传回去给第二层下拉选单呈现
可是不知道是不是语法有错误
第二层AJAX response 虽然是success 不过都显示"undefined" <--Q1
爬文过也试过加上"async:false"还是一样"undefined"
我是在做一个新增资料的表单
因为资料表栏位的关系
所以想顺便问如何分别取得 这两层选单 选取的值 <--Q2
请有空的大大帮帮我 感恩!!
index.php AJAX部分
<script>
$(function() {
$('#myParentSelect').change(function() {
//更动第一层时第二层清空
$('#myFirstChildSelect').empty().append("<option value=''>请选择</option>");
var i = 0;
$.ajax({
type: "GET",
async:false,
url: "action.php",
data: {
lv: $('#myParentSelect option:selected').val()
},
datatype: "json",
success: function(result) {
//依据第一层回传的值去改变第二层的内容
while (i < result.length) {
$("#myFirstChildSelect").append("<option value='" + i + "'>" + result[i]['cat2_value'] + "</option>");
i++;
}
},
error: function(xhr, status, msg) {
console.error(xhr);
console.error(msg);
}
});
});
});
</script>
action.php
<?php
header('Content-Type: application/json;charset=utf-8'); //return json string
//DB connect
$lvnum = $_GET['lv'];
$jarray = array(); //使用array储存结果,再以json_encode一次回传
if ($lvnum != 0) {
//此query视table结构调整,基本上是第一层ID=第二层ID的概念
$query = "SELECT smallcat_value FROM pro_category where bigcat= $lvnum";//取大类别选取的值 当条件
$result = mysqli_query($link,$query)or die('query did not work');
while ($row = mysqli_fetch_assoc($result)) {
$jarray[] = $row;
}
} else {
echo 0;
return;
}
echo json_encode($jarray);
return;
?>