【问题标题】:How to call ajax data correctly如何正确调用ajax数据
【发布时间】:2018-08-26 23:44:29
【问题描述】:

我有一个数据库表名称国家和州我试图在选择国家时调用州每个州都有关联的国家列名称 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 success:function(data){console.log()} 中插入 console.log() 时,它显示国家的相关值,但我认为我做错了ajax 代码中的某处。

当我在 getStates.php 文件中插入 $_POST['country_code']$_POST['countryCode'] 时,我也会收到未定义变量错误。

我确定 ajax 调用有问题

【问题讨论】:

标签: php ajax


【解决方案1】:

您正在尝试将country_code 作为值发送。但是您还没有声明变量。试试:

data: {'countryCode':countryCode},

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

【讨论】:

  • 现在我得到 (!) 注意:未定义索引:第 X 行的 path/to/getStates.php 中的 countryCode 我在 getStates.php 文件中使用 $_POST['CountryCode']
  • 刚刚找到解决方案w3schools.com/php/php_ajax_database.asp 现在一切正常。
猜你喜欢
  • 2017-08-26
  • 1970-01-01
  • 2017-01-30
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
相关资源
最近更新 更多