我正在尝试根据之前的选择(#region)和ajax从db表填充新的选择菜单(#school)。我想得到类似的东西:如果没有结果,那么隐藏#school和#class并仅显示错误消息。如果搜索。 php找到结果,然后在第一所学校展示,如果学校选择了,那么显示#class。
我的ajax POST出了什么问题?它没有从db获得任何东西。请帮助我让它工作。 我的js看起来像那样
$(document).ready(function(){
$("#school").hide();
$("#class").hide();
searchSchool = function(regionSelect){
var selectedRegion = $("select[name*='"+regionSelect.name+"'] option:selected").val();
if (selectedRegion!='0'){
$.ajax({
type: "POST",
url : "core/code/includes/search.php",
data: {region_id: selectedRegion},
success: function(result, status, xResponse){
if (result!=''){
$("#school").show();
$("#class").show();
$("#school").html(result);
$("#error").hide();
}else{
$("#error").html("There is no school found in this region");
$("#school").html('');
$("#school").hide();
}
},
error: function(e){
alert(e);
}
});
}else{
$("#error").html('Please select a region first');
$("#school").html('');
$("#school").hide();
$("#class").hide();
}
}
});
和search.php
<?php
require 'db.php';
if(isSet($_POST['region_id'])) {
$region_id = mysql_real_escape_string($_POST['region_id']);
$res=$db->query("SELECT * FROM schools WHERE id='".$_POST['region_id']."'");
while ($row = $res->fetch_array(MYSQLI_BOTH)) {
echo '<option value="'.$row[0].'">'.$row[1].'</option>';
}
}
?>
答案 0 :(得分:4)
看起来像:
$res=$db->query("SELECT * FROM schools WHERE id='".$_POST['region_code']."'");
应该是:
$region_id = mysql_real_escape_string($_POST['region_id']);
$res=$db->query("SELECT * FROM schools WHERE id='$region_id'");
也不要忘记使用mysql_real_escape_string(),如上所述。
请注意,如果您使用mysqli
lib,则需要使用mysqli_real_escape_string()
。
答案 1 :(得分:0)
data: "®ion_id="+selectedRegion,
对我来说不对劲。我会使用data: {region_id: selectedRegion},
。
另请参阅@stewe's answer有关使用region_code
而不是region_id
的信息。