好。問題解決了。
我改變了一點點的做法:
腳本
<script type="text/javascript">
$(document).ready(function(){
$('#country').on('change',function(){
var countryID = $(this).val();
if(countryID){
$.ajax({
type:'POST',
url:'getcountrycitysite.php',
data:'country='+countryID,
success:function(html){
$('#city').html(html);
$('#site').html('<option value="">Select city first</option>');
}
});
}else{
$('#city').html('<option value="">Select country first</option>');
$('#site').html('<option value="">Select city first</option>');
}
});
$('#city').on('change',function(){
var cityID = $(this).val();
if(cityID){
$.ajax({
type:'POST',
url:'getcountrycitysite.php',
data:'city='+cityID,
success:function(html){
$('#site').html(html);
}
});
}else{
$('#site').html('<option value="">Select city first</option>');
}
});
});
</script>
(...)
<div class="form-group">
<label>Country</label>
<select class="form-control" name="country" id="country" required>
<option disabled selected value> -- select an option -- </option>
<?php
require_once ("settings.php");
$link = @mysqli_connect($dbhostname, $dbusername, $dbpassword, $dbname);
$query = "SELECT * FROM country";
if (mysqli_query($link, $query)) {
$result = mysqli_query($link, $query);
while ($row = mysqli_fetch_array($result)) {
echo '<option value = '.$row["id"].'>'.$row["country"].'</option>';
}
} else {
echo "blah";
}
mysqli_close($link);
?>
</select>
</div>
<div class="form-group">
<label>City</label>
<select class="form-control" name="city" id="city" required>
<option disabled selected value> -- select an option -- </option>
</select>
</div>
<div class="form-group">
<label>Site</label>
<select class="form-control" name="site" id="site" required>
<option disabled selected value> -- select an option -- </option>
</select>
</div>
(...)
正如你看到我刪除onChange =「getCity(this.value);在選擇和創建一個單一的PHP腳本獲取城市和網站值:
<?php
require_once("settings.php");
if (isset($_POST["country"]) && !empty($_POST["country"])) {
$link = @mysqli_connect($dbhostname, $dbusername, $dbpassword, $dbname);
$query = 'SELECT * FROM city WHERE idcountry = ' . $_POST["country"];
$resultcity = mysqli_query($link, $query);
$rowcnt = mysqli_num_rows($resultcity);
if ($rowcnt > 0) {
echo '<option value="">Select City</option>';
while ($row = mysqli_fetch_array($resultcity)) {
echo '<option value="' . $row['id'] . '">' . $row['city'] . '</option>';
}
} else {
echo '<option value="">City not Available</option>';
}
}
if (isset($_POST["city"]) && !empty($_POST["city"])) {
$link = @mysqli_connect($dbhostname, $dbusername, $dbpassword, $dbname);
$query = 'SELECT * FROM site WHERE idcity = ' . $_POST["city"];
$resultsite = mysqli_query($link, $query);
$rowcnt = mysqli_num_rows($resultsite);
if ($rowcnt > 0) {
echo '<option value="">Select site</option>';
while ($row = mysqli_fetch_array($resultsite)) {
echo '<option value="' . $row['id'] . '">' . $row['site'] . '</option>';
}
} else {
echo '<option value="">Site not available</option>';
}
}
?>
*「...但」網站「下拉列表不會填充,除非我手動更改城市下拉菜單」* - 因爲這就是它的編程方式:'id =「city」onChange =「getSite(this.value) ;'','getSite'方法改變'#site'的HTML:'$(「#site」)。html(data)'。 –
你期待的行爲是什麼? – scrappedcola
@SpencerWieczorek其實他在getCity()中的ajax調用之後調用getSite()。 –