Php 当第一个下拉菜单更改时,我无法加载第二个下拉菜单。第二个下拉列表取决于第一个下拉列表
这是我的代码,显示第二个的值时出现问题: HTML:我的表单,第一个下拉列表,我通过查询从数据库中获取元素Php 当第一个下拉菜单更改时,我无法加载第二个下拉菜单。第二个下拉列表取决于第一个下拉列表,php,jquery,mysql,Php,Jquery,Mysql,这是我的代码,显示第二个的值时出现问题: HTML:我的表单,第一个下拉列表,我通过查询从数据库中获取元素 <form name="farmer" action="index.php" method="post"> <label> <span>Chose Land:<
<form name="farmer" action="index.php" method="post">
<label>
<span>Chose Land:</span>
<select name="land" id="land">
<option value="">--land--</option>
<?php
$sql="SELECT `city` FROM `lands`";
$result =mysql_query($sql);
while ($data=mysql_fetch_assoc($result)){
?>
<option value ="<?php echo $data['city'] ?>" ><?php echo $data['city'] ?></option>
<?php } ?>
</select>
</label>
<label>
<span>Region:</span>
<select name="region" id="region">
<option value="">--region--</option>
</select>
</label>
<input class="button4" type="submit" name="submit" value="Submit" />
</form>
JS
getList.json.php文件-这里我使用queryJOIN在region和land之间建立连接
<?php
mysql_connect("localhost", "root", "") or die( "Unable to connect to database");
mysql_select_db("farmer_fields") or die( "Unable to select database");
if($_POST && $_POST['land'] != "") {
$sql="SELECT region FROM regions
LEFT JOIN lands
ON regions.id_lands = lands.id";
$rows = array();
while ($data=mysql_fetch_assoc($sql)){
$rows['region'] = $data;
}
echo json_encode( $rows );
}
?>
这里不需要json。您只需使用jquery和ajax即可 jquery: 函数获取区域国家id{ 如果国家/地区id!=0{ $region\u id.htmlSelect region; $region_id.propdisabled,true; $.postajax/ajax.php{ 国家/地区id:国家/地区id },函数数据{ var data_array=data.split;; 变量编号\u of_name=data\u array.length-1; var值; var文本; var-opt; var-temp_阵列; 对于变量i=0;i
为了安全起见,您可以将mysql\u查询更改为PDO,因为mysql\u查询已被定价。检查此项,对我有效 JS: PHP:
jQuery'lands'-我认为在你的JS中这是一个输入错误,应该是jQuery'land',这里是query:$sql=SELECT region FROM regions LEFT JOIN lands ON regions.id_lands=lands.id WHERE city=$_邮政['land'];你的代码充满了错误。。。在这里发布问题之前,你试过运行它吗?“lands”应该没有s,错误是我的。我试过WHERE子句,但没有效果,是的,我在发布之前已经运行了代码;我已经尝试了你的代码,但是当我在jquery上从第一个下拉列表中选择了一些内容时,仍然显示第二个下拉列表被禁用。postajax/ajax.php,{country\u id:country\u id},functiondata{…这是什么意思coutry\u id:coutry\u id这是第一个选择的id吗OK,我已经尝试了你的代码,它更清晰,你也知道我的代码,但是当我从第一个下拉列表中选择时…第二个是空的。echo…这里我想你有一个额外的after值。请参阅更新。你忘记执行了我复制了它[您是否尝试在mysql中执行查询?它是否返回任何数据?检查是否有数据来自客户端firebug、chrome dev tools、dragonfly上的服务器。或者您在WHERE子句中的post方法“getList.json.php”中使用了错误的URL,我将其更改为WHERE l.city=\.mysql\u real\u escape\u string$\u post['land'].\;而且很有效……太棒了!
<?php
mysql_connect("localhost", "root", "") or die( "Unable to connect to database");
mysql_select_db("farmer_fields") or die( "Unable to select database");
if($_POST && $_POST['land'] != "") {
$sql="SELECT region FROM regions
LEFT JOIN lands
ON regions.id_lands = lands.id";
$rows = array();
while ($data=mysql_fetch_assoc($sql)){
$rows['region'] = $data;
}
echo json_encode( $rows );
}
?>
jQuery(document).ready(function() {
var region = jQuery('#region');
var land = jQuery('#land').change(function() {
jQuery.post(
'getList.json.php', {
'land': land.val()
},
function(data) {
jQuery('#region').empty();
if (data != null) {
region.append(data);
}
else {
region.append('<option value="">Please select...</option>');
}
},
'html'
);
});
});
if($_POST && $_POST['land'] != "") {
$sql="SELECT region
FROM regions r
LEFT JOIN lands l ON r.id_lands = l.id
WHERE l.city = " . $_POST['land'];
$result = mysql_query($sql); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< UPD!
while ($data = mysql_fetch_assoc($result)) {
echo '<option value="' . $data['region'] . '">' . $data['region'] . '</option>';
}
}