gpt4 book ai didi

php - 动态下拉列表第二个列表未填充

转载 作者:行者123 更新时间:2023-11-29 17:53:30 25 4
gpt4 key购买 nike

我正在尝试创建一个动态下拉列表,其中城市根据从 MYSQL 数据库中选择的州进行填充。

当我测试它时,第一个下拉列表可以从数据库中很好地填充,给出状态名称和 state_id。

第二个下拉列表未填充。我认为这是因为我正在使用的 fetch.php 文件发送和接收时出现问题。

我认为 Ajax 是正确的。 Fetch.php 在我的文件结构中位于index.php 旁边,因此它应该能够找到它。

已尝试调整 fetch.php,使其不必连接到数据库,而只需用文本回显一个简单的选项,但这仍然不会在城市下拉列表中更新。对此很陌生,因此我们将不胜感激。

Index.php 中的 HTML 代码:

 <?php require_once('../private/initialize.php'); ?>
<?php include(SHARED_PATH . '/header.php'); //SHARED_PATH located in initialize.php ?>

<div id="main-container">
<form action="" id="cost_form" method="post" onsubmit="return false;">
<div id="select-container">
<fieldset class="fieldset">
<div class="custom-select" >
<select id="state" name="state" class = "form-control" onchange="get_cities(this.value);" >
<option value="" >Select State</option>
<?php $state_set = find_all_states();
while ($state = mysqli_fetch_assoc($state_set)) {
echo '<option value="'.h($state["state_id"]).'">'.$state["state_name"].'</option>';}
?>
</select>
</div>
<div class="custom-select" >
<select id="city" name="city" class="form-control">
<option value="1">Select City</option>
</select>
</div>

<div id="total_price"></div>

</fieldset>
</div>
</form>
</div>

<?php include(SHARED_PATH . '/footer.php'); //SHARED_PATH located in initialize.php ?>

<script type="text/javascript">

function get_cities(val) {
$.ajax({
type: "POST",
url: "fetch.php",
data:'state_id='+val,

success: function(data){
$("#city").html(data);
}
});
}
</script>

Fetch.php代码:

<?php require_once('../private/initialize.php'); ?>

<?php

if(isset($_POST['state_id'])) {
$id = $_POST['state_id'];

$city_set = find_city_by_id($id);
while ($city = mysqli_fetch_assoc($city_set)) {
echo '<option value="'.h($city["city_multiplier"]).'">'.$city["city_name"].'</option>';}
}

?>

查询函数,通过Initialize.php访问:

   <?php 

function find_all_states() {
global $db;

$sql = "SELECT * FROM states ";

$result = mysqli_query($db, $sql);
confirm_result_set($result);
return $result;
}

function find_city_by_id($id) {
global $db;

$sql = "SELECT * FROM cities WHERE state_id ='".$id."'";

$result = mysqli_query($db, $sql);
confirm_result_set($result);
return $result;
}
?>

数据库,通过Initialize.php访问:

<?php 

require_once ('db_credentials.php');

function db_connect() {
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
confirm_db_connect();
return $connection;
}

function db_disconnect($connection) {
if(isset($connection)) {
mysqli_close($connection);
}
}

function confirm_db_connect() {
if(mysqli_connect_errno()) {
$msg = "Database connection failed: ";
$msg .= mysqli_connect_error();
$msg .= " (" . mysqli_connect_errno() . ")";
exit($msg);
}
}

function confirm_result_set($result_set) {
if (!$result_set) {
exit("Database query failed.");
}
}

?>

最佳答案

可能是因为这个:

$.ajax({
type: "POST",
url: "fetch.php",
data:'state_id='+val,

success: function(data){
$("#city").html(data);
}
});

据我所知,数据应该这样传递:

data: { 
'state_id': val
}

尝试在 if(isset($_POST['state_id'])) 之后执行 echo"TEST"; 来查看问题是否出在您的 jQuery 或其他方面。

关于php - 动态下拉列表第二个列表未填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49087916/

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