我的页面上有一个表单,其中包含两个选择下拉列表。第一个允许用户选择一个国家,第二个允许用户从该国家/地区选择一个城市。我希望第二个下拉选项可以根据之前选择的国家/地区填写城市。目前,我有一个onChange事件,它导致一个AJAX脚本,它从外部php文件填充城市。到目前为止,这是我的代码:
HTML表单
<form method="post">
<select name="country" onchange="dynamic_Select('city.php', this.value)" />
<option value="#">-Select-</option>
<option value="India">India</option>
<option value="USA">USA</option>
</select>
<div id="txtResult">
<select name="cityList">
<option></option>
</select>
</div>
</form>
标题中的AJAX脚本(dynamic_Select)
<script>
function dynamic_Select(ajax_page, country) {
$.ajax({
type: "GET",
url: ajax_page,
data: "ch=" + country,
dataType: "text/html", //<--UPDATE: DELETING THIS LINE FIXES EVERYTHING
//<--UPDATE2: DON'T DELETE; REPLACE "test/html" with "html"
success: function(html){ $("#txtResult").html(html); }
});
}
</script>
//I also have a link to the jquery file
<script src="js/jquery.js" type="text/javascript"></script>
外部PHP文件(city.php)
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
// List of cities for India
if ($_GET['ch'] == 'India') {
?>
<select name="cityList">
<option value="Mumbai">Mumbai</option>
<option value="Delhi">Delhi</option>
<option value="Bangalore">Bangalore</option>
<option value="Patna">Patna</option>
</select>
<?php
}
// List of cities for USA
if ($_GET['ch'] == 'USA') {
?>
<select name="cityList">
<option value="Albama">Albama</option>
<option value="Alaska">Alaska</option>
<option value="Arizona">Arizona</option>
<option value="Florida">Florida</option>
</select>
<?php
}
?>
上面的一组代码无效,我无法弄清楚原因。页面上显示两个下拉列表(第二个下拉列表最初为空白),但从第一个下拉列表中选择一个国家/地区后,第二个下拉列表仍为空白。任何帮助将不胜感激!
答案 0 :(得分:3)
将dataType参数从“text / html”更改为“html”。
答案 1 :(得分:1)
另外,你可以缩短所有这些:
function dynamic_Select(ajax_page, country) {
$.ajax({
type: "GET",
url: ajax_page,
data: "ch=" + country,
dataType: "text/html", //<--UPDATE: DELETING THIS LINE FIXES EVERYTHING
//<--UPDATE2: DON'T DELETE; REPLACE "test/html" with "html"
success: function(html){ $("#txtResult").html(html); }
});
}
要:
function dynamic_Select(ajax_page, country) {
$.get(ajax_page, {ch: country}, function(h) {
$('#txtResult').html(h);
});
}