简体   繁体   English

为什么我的Ajax代码不更新第二个下拉列表?

[英]Why isn't my ajax code updating my second dropdown?

I have no idea why my code isn't working. 我不知道为什么我的代码无法正常工作。 I basically have two dropdowns, the first is populated from an mssql database and I want the second dropdown to update dependant on the selection in the first. 我基本上有两个下拉列表,第一个下拉列表是从mssql数据库填充的,我希望第二个下拉列表根据第一个下拉列表的选择进行更新。

Below is my code which populates a dropdown box: 以下是填充下拉框的代码:

<?php
session_start();
$serverName = "REDACTED";
$connectionInfo = array( "Database"=>"REDACTED", "UID"=>"REDACTED", "PWD"=>"REDACTED");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if (!isset($_SESSION['nID']))
{
    header("Location: Login.php");
    die();
}

function loadRegion()
{
    include 'config.php';
    $output = '';
    $regionQuery = 'select distinct id, region from regionsHaiss order by id';
    $regionPopulate = sqlsrv_query($conn, $regionQuery, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
    while($row = sqlsrv_fetch_array($regionPopulate))
    {
        $output .= "<option value=\"".htmlspecialchars($row['ID'])."\">".$row['region']."</option>";
    }
    return $output;
}
?>

I then use this to populate the first dropdown: 然后,我用它来填充第一个下拉列表:

<p>Select a Region
<select name ="region" id ="region">
<option value ="">Select Region</option>
<?php echo loadRegion(); ?>
</select></p>

For the second dropdown box I have the following: 对于第二个下拉框,我具有以下内容:

<p>Select a Territory
<select name="territory" id="territory">
<option value="">Select Territory</option>
</select></p>

I call my ajax via: 我通过以下方式调用ajax:

<script>
$(document).ready(function(){
    alert("ready");
    $('#region').change(function(){
        var region_id = $(this).val();
        $.ajax({
            url:"getter.php",
            method:"POST",
            data:{regionId:region_id},
            dataType:"text",
            success:function(data){
                $('#territory').html(data);
            }
        });
    });
});
</script>

My getter page reads as follows: 我的getter页面内容如下:

<?php 
session_start();
include 'config.php';

$output = '';
$sql = "SELECT distinct id,territory,rid FROM territoriesHaiss where RID = '".$_POST["regionId"]."' order by id";
$result = sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
$output = '<option value ="">Select Territory</option>';

while($row = sqlsrv_fetch_array($result))
    {
        $output .= "<option value=\"".htmlspecialchars($row['ID'])."\">".$row['territory']."</option>";
    }

echo $output;

?>

As pointed out by the 2 comments above (thanks again for the help!) the error was in the code that populates the first dropdown. 正如上面的2条注释所指出的(再次感谢您的帮助!),该错误在于填充第一个下拉列表的代码中。 It should have been a lowercase 'ID', like follows: 它应该是小写的“ ID”,如下所示:

function loadRegion()
{
    include 'config.php';
    $output = '';
    $regionQuery = 'select distinct id, region from regionsHaiss order by id';
    $regionPopulate = sqlsrv_query($conn, $regionQuery, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
    while($row = sqlsrv_fetch_array($regionPopulate))
    {
        $output .= "<option value=\"".htmlspecialchars($row['id'])."\">".$row['region']."</option>";
    }
    return $output;
}
?> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM