gpt4 book ai didi

javascript - 如何使用ajax从php获取多个数据并将其存储在选择选项中

转载 作者:行者123 更新时间:2023-12-03 08:21:54 25 4
gpt4 key购买 nike

我有一个选择选项,可以从中选择从 php 脚本获取的酒店名称。

然后我有另一个选择选项,它根据第一个选择选项中选择的酒店显示房间类型。

当我在 ajax 的帮助下选择一家酒店时,我在第二个选择选项中只得到一种房型,而在我的表格中,我为一家酒店提供了多种房型。

我的用于获取房间类型的 php 代码。

<?php 
include('mysql.php');
$h_id = $_POST['hotel_id'];
$result = mysql_query("SELECT * FROM room_type WHERE hotel_id = '$h_id'");
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$type_name = $row['type_name'];
$type_id = $row['roomtype_id'];
echo $type_name.",".$type_id;
}


exit();
?>

JavaScript:

jQuery(document).ready(function($){
$('#hotel_list').change(function(){
$.ajax({
type:'post',
url:'roomtype_fetch.php',
data: 'hotel_id='+ $(this).val(),
success: function(value){
var data = value.split(",");
var type_name =data[0];
var type_id =data[1];
$("#roomtype_list").html("<option value="+type_id+">"+type_name+"</option>");
}
});
});
});

第一个选择选项的 html 及其 php 来获取酒店名称。

<select class="form-control" name="hotel_list" id="hotel_list" onchange="cal()">
<option>--Select--</option>
<?php
$query2 = mysql_query("SELECT * FROM hotel") or die("the query cannot be completed at this moment");
if(mysql_num_rows($query2) <1) {
?>
<option>No Hotel Found!</option>
<?php
}
while($row = mysql_fetch_array($query2, MYSQL_ASSOC)){
$hotel_name = $row['hotel_name'];
$hotel_id_1 = $row['hotel_id'];
?>
<option value="<?php echo $hotel_id_1; ?>"><?php echo $hotel_name; ?></option>
<?php
}
?>
</select>

第二个选择html代码:

<select class="form-control" name="roomtype_list" id="roomtype_list">
<option>--Select--</option>
</select>

任何类型的帮助将不胜感激。

最佳答案

你不能直接执行 value.split(",") 因为你的 php 输出看起来像:

name1,id1name2,id2name3,id3

如果您将行更改为:,echo 不会在末尾添加新行:

echo $type_name.",".$type_id,"\n";

这会给你一个类似的输出:

name1,id1
name2,id2
name3,id3

然后您可以用“\n”拆分以获得行数组,然后用“,”分隔名称和 ID:

var data = value.split(",");
data.forEach(function(line){
var type_values = line.split(",");
var type_name = type_values[0];
var type_id = type_values[1];
$("#roomtype_list").html("<option value="+type_id+">"+type_name+"</option>");
}

但无论如何,我认为最好的选择是更改 php 以返回 JSON:

$result = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$result[] = $row;
}
echo json_encode($result);

然后只需执行以下操作:

var data = JSON.parse(value);
$("#roomtype_list").empty();
data.forEach(function(type){
$("#roomtype_list").append("<option value="+type.roomtype_id+">"+type.type_name+"</option>");
});

关于javascript - 如何使用ajax从php获取多个数据并将其存储在选择选项中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33710855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com