我的ajax POST出了什么问题?

时间:2011-08-29 07:49:59

标签: php jquery mysql ajax

我正在尝试根据之前的选择(#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>';
}
}
?>

2 个答案:

答案 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: "&region_id="+selectedRegion,对我来说不对劲。我会使用data: {region_id: selectedRegion},

另请参阅@stewe's answer有关使用region_code而不是region_id的信息。