Javascript 动态下拉列表,$\u使用空格获取

Javascript 动态下拉列表,$\u使用空格获取,javascript,php,mysql,Javascript,Php,Mysql,我使用Javascript/jquery创建了一个动态下拉菜单,并使用php mysql填充: $("#first-choice").change(function() { $("#second-choice").load("getter.php?choice=" + $(this).val()); }); 它工作得非常好,除非第一个选择的选项有两个单词而不是一个单词(中间有空格),例如:“option”工作正常,第二个列表填充,“option 2”不工作,第二个列表为空。下面

我使用Javascript/jquery创建了一个动态下拉菜单,并使用php mysql填充:

$("#first-choice").change(function() {
    $("#second-choice").load("getter.php?choice=" + $(this).val());
    });
它工作得非常好,除非第一个选择的选项有两个单词而不是一个单词(中间有空格),例如:“option”工作正常,第二个列表填充,“option 2”不工作,第二个列表为空。下面是我的getter.php代码:

$choice = $_GET['choice'];

$sth = $db->prepare("SELECT code FROM sets WHERE name='$choice'");
$sth->execute();
$choicecode = $sth->fetchColumn();

在JS中发送时需要对其进行编码:

encodeURIComponent($(this).val()); // will produce something like "Option%20Two"
所以,它应该是这样的:

(`$("#second-choice").load("getter.php?choice=" + encodeURIComponent($(this).val()) );`)

当放入查询字符串时,需要对空格进行编码。jQuery可以为您做到这一点:

$("#first-choice").change(function() {
    $.get("getter.php", { choice: $(this).val() }, function(data) {
        $("#second-choice").html(data);
    });
});
$sth=$db->prepare(“从name='$choice'的集合中选择代码”)?请不要那样做<代码>$sth=$db->prepare('SELECT code FROM set WHERE name=:choice')$sth->execute([':choice'=>$choice])相当肯定,是的。看见