Php 存在变量时的ajax下拉框

Php 存在变量时的ajax下拉框,php,jquery,html,json,ajax,Php,Jquery,Html,Json,Ajax,我正在尝试对一个下拉框(动态)进行ajax调用 当变量$place可用时,它将进行ajax调用并填充 下拉框 我试图将变量$place传递到listplace.php并将其编码为json数据并获取数据列表值,但不确定编码的json文件是否正确 我只是尝试了一下,不确定下面的代码是否有效,请帮助 下拉框 <select> <option selected disabled>Please select</option> </select>

我正在尝试对一个下拉框(动态)进行ajax调用

  • 当变量
    $place
    可用时,它将进行ajax调用并填充 下拉框
我试图将变量
$place
传递到
listplace.php
并将其编码为json数据并获取数据列表值,但不确定编码的json文件是否正确

我只是尝试了一下,不确定下面的代码是否有效,请帮助

下拉框

<select>
  <option selected disabled>Please select</option>
</select>

请选择
Ajax调用

<?php if(isset($_GET['place']) && $_GET['place'] !='') {?>
<script>
    $.ajax({
        type: "POST",
        data: {place: '<?= $place ?>'},
        url: 'listplace.php',
        dataType: 'json',
        success: function (json) {
            var $el = $("#name");
            $el.empty(); // remove old options
            $el.append($("<option></option>")
                .attr("value", '').text('Please Select'));
        }
    });
</script>
<?php } ?>

$.ajax({
类型:“POST”,
数据:{位置:'},
url:'listplace.php',
数据类型:“json”,
成功:函数(json){
变量$el=$(“#名称”);
$el.empty();//删除旧选项
$el.append($(“”)
.attr(“值”),.text(“请选择”);
}
});
listplace.php

<?php
$sql = @mysql_query("select placename from employee where placename= '$place'");
$rows = array();
while($r = mysql_fetch_assoc($sql)) {
  $rows[] = $r;
}

将AJAX调用更改为以下内容

<?php if (isset($_GET['place']) && $_GET['place'] != '') { ?>
    <script>
        $.ajax({
            type: "POST",
            data: {place: '<?= $_GET['place'] ?>'},
            url: 'listplace.php',
            dataType: 'json',
            success: function (json) {
                if (json.option.length) {
                    var $el = $("#name"); 
                    $el.empty(); // remove old options
                    for (var i = 0; i < json.option.length; i++) {
                        $el.append($('<option>',
                            {
                                value: json.option[i],
                                text: json.option[i]
                            }));
                    }
                }else {
                    alert('No data found!');
                }
            }
        });
    </script>
<?php } ?>

$.ajax({
类型:“POST”,
数据:{位置:'},
url:'listplace.php',
数据类型:“json”,
成功:函数(json){
if(json.option.length){
变量$el=$(“#名称”);
$el.empty();//删除旧选项
for(var i=0;i
和你的PHP

<?php
$place = $_POST['place'];
$sql = @mysqli_query($conn,"select placename from employee where placename= '$place'");
$rows = array();
while($r = mysqli_fetch_assoc($sql)) {
    $rows[] = $r['placename'];
}
if (count($rows)) {
    echo json_encode(['option'=> $rows]);
}else {
    echo json_encode(['option'=> false]);
}

您是否通过控制台或警报检查了ajax响应?那么问题出在哪里?@2by2我不太确定我的ajax调用我怀疑我的ajax请求是否会在下拉列表中填充。如果位置可用,你想打ajax电话,但你正在用
数据发送部门
这不应该是地方吗?@2by2我把部门编辑成了地方,我错把它留下了,你能帮我回答一下吗..谢谢,有疑问我应该改变我的下拉框代码关于id名称吗?你可以使用任何选择的id,你喜欢的。取决于您希望将选项附加到哪里。所以我应该添加下拉代码!谢谢我是否应该向下拉框中添加任何id?如果您想分离部分代码以更快地使用DOM(例如var main=$('#main)),那么对于jquery来说,codeyes id的查找速度更快;var select=main.find(“#我的选择”);如果要在id为#main的div中查找select only,则速度更快,而且它是独立的,我更喜欢在基本HTML元素上使用id,而在javascript中使用data atribute作为它的清理器。您的布局(id)将DOM分离到最低部分。
<?php if (isset($_GET['place']) && $_GET['place'] != '') { ?>
    <script>
        $.ajax({
            type: "POST",
            data: {place: '<?= $_GET['place'] ?>'},
            url: 'listplace.php',
            dataType: 'json',
            success: function (json) {
                if (json.option.length) {
                    var $el = $("#name"); 
                    $el.empty(); // remove old options
                    for (var i = 0; i < json.option.length; i++) {
                        $el.append($('<option>',
                            {
                                value: json.option[i],
                                text: json.option[i]
                            }));
                    }
                }else {
                    alert('No data found!');
                }
            }
        });
    </script>
<?php } ?>
<?php
$place = $_POST['place'];
$sql = @mysqli_query($conn,"select placename from employee where placename= '$place'");
$rows = array();
while($r = mysqli_fetch_assoc($sql)) {
    $rows[] = $r['placename'];
}
if (count($rows)) {
    echo json_encode(['option'=> $rows]);
}else {
    echo json_encode(['option'=> false]);
}