我有一个数据库表名称country&States,当我选择每个国家时,我试图调用州,每个州都有相关的国家/地区名称XX,例如巴基斯坦PK,美国US等,因此我的代码示例如下:找到解决方案。
国家/地区选择框
<select name="country" id="country">
<option value="-1">Select Country</option>
<?php
$query = $mysqli->query("SELECT * FROM `country`");
while ( $row = mysqli_fetch_assoc($query) ) {
echo '<option value="'.$row['country_code'].'">';
echo $row['country_name'];
echo '</option>';
}
?>
状态选择框
<select name="country" id="states">
<option value="-1">Select State</option>
</select>
Ajax呼叫
$(document).ready(function(){
$('#country').on('change',function(){
var countryCode = $(this).val();
if(countryCode){
$.ajax({
type: "POST",
url: 'getStates.php',
data: {countryCode:country_code},
success:function(data){
$("#states").html(data);
}
});
}
});
});
我有一个单独的文件,我在其中使用ajax获取状态
<?php include_once("inc/config.php");?>
<option value="-1">Select State</option>
<?php
$query = $mysqli->query("SELECT * FROM `state` WHERE `country_code` = '".$_POST['country_code']."' ");
while( $row = mysqli_fetch_array($query) ){
echo '<option value="';
$row['state_id'];
echo '">';
echo $row['state_name'];
echo '</option>';
}
?>
<option value="Other">Other</option>
注意:
数据库连接是可以的,因为当我在getStates.php文件中插入'PK'
而不是'".$_POST['country_code']."'
时,它工作正常,当我在ajax console.log()
中插入success:function(data){console.log()}
时,它显示了国家的相关值。但是我认为我在Ajax代码中的某个地方犯了一些错误。
在getStates.php文件中插入$_POST['country_code']
或$_POST['countryCode']
时,也会得到未定义的变量错误。
我确定ajax调用中有问题
答案 0 :(得分:1)
您正在尝试发送country_code
作为值。但是您尚未声明变量。试试:
data: {'countryCode':countryCode},
也:您可能需要在使用用户在查询中发布的变量之前添加一些安全检查。看看:https://en.wikipedia.org/wiki/SQL_injection