如何正确调用ajax数据

时间:2018-08-26 15:33:23

标签: php ajax

我有一个数据库表名称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调用中有问题

1 个答案:

答案 0 :(得分:1)

您正在尝试发送country_code作为值。但是您尚未声明变量。试试:

data: {'countryCode':countryCode},

也:您可能需要在使用用户在查询中发布的变量之前添加一些安全检查。看看:https://en.wikipedia.org/wiki/SQL_injection