我想创建一个由另一个下拉列表填充的下拉列表。我正在使用AJAX和PHP。
我已经创建了这样的AJAX文件:
<?php
if(isset($_POST['selname']))
{
include('config.php');
$clientId = $_POST['selname'];
$query = "SELECT tv.*, v.* FROM t_vorder tv LEFT JOIN m_vehicle v ON tv.tv_vehicleid = v.v_id WHERE tv_orderid = '$clientId'";
$result = mysqli_query($conn, $query);
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
$namek = "";
$namek .= $row['v_id'];
if($row['v_jenis'] != "" || !empty($row['v_jenis']))
{
$namek .= ' - '.$row['v_jenis'];
}
if($row['v_platno'] != "" || !empty($row['v_platno']))
{
$namek .= ' - '.$row['v_platno'];
}
if($row['v_merk'] != "" || !empty($row['v_merk']))
{
$namek .= ' - '.$row['v_merk'];
}
$xx .= "<option value='$row[v_id]'>$namek</option>";
}
return $xx;
exit;
}
?>
之后,我将这个AJAX文件称为我的主程序,这是我的JQuery代码:
function getVehicle()
{
var selname = $("select[name=noorder]").val();
$('#combobox2').html('');
$.ajax({ url: "getVehicle.php",
data: {"selname":selname},
type: 'post',
dataType: "json",
success: function(output) {
console.log(output);
$('#combobox2').append(output);
}
});
}
最后是我的HTML代码:
<select name="noorder" id="combobox" class="form-control">
//get my vehicle from database
<?php
$querycon = mysqli_query($conn, "SELECT * FROM m_order WHERE o_status='1' ORDER BY o_id");
while($rowcon = mysqli_fetch_array($querycon, MYSQLI_ASSOC))
{
$invoice = sprintf("%s%"."04d", $rowcon['o_code'], $rowcon['o_id']);
?>
<option value="<?php echo $rowcon['o_id']; ?>"><?php echo $invoice; ?></option>
<?php
}
?>
</select>
<select name="kendaraan" class="form-control" id="combobox2" onclick="getVechile();">
</select>
我的Ajax工作正常,我的控制台日志返回文件已完成加载。但我的下拉列表没有附加Jquery。任何人都知道我的错误在哪里?
答案 0 :(得分:2)
你没有要求{j}成功回调json
obj / data,然后在ajax属性中不需要dataType: "json",
。删除该内容并将return $xx;
更改为echo $xx;
答案 1 :(得分:0)
AJAX请求仅在页面打印出来时从PHP文件中获取数据。
从PHP(AJAX后端)返回数据到jQuery / Javascript并不意味着什么。
更改
return $xx;
到
echo $xx;
答案 2 :(得分:0)
您在ajax调用中使用dataType: "json"
,因此它在JSON中得到响应。首先从ajax调用中删除dataType: "json"
行。然后在php脚本中用return $xx;
替换echo $xx;
。
希望这个解决方案对您有用,谢谢!