Php Wordpress选项页面中动态生成的下拉列表

Php Wordpress选项页面中动态生成的下拉列表,php,mysql,ajax,wordpress,Php,Mysql,Ajax,Wordpress,我有一个插件,我正在工作,其中一部分由选项页面上的“条件”下拉列表组成。基本上,我有一个包含三个选项的下拉列表,第二个下拉列表根据第一个下拉列表中选择的内容填充数据库中的信息。问题是,我不知道如何填充第二个下拉列表!我对AJAX不是很在行,但它似乎是一个可能的解决方案。这里经验丰富的开发者有什么想法吗 编辑:这里是我目前的位置,但它似乎从未运行过: <form action="<?php echo site_url() ?>/wp-admin/admin.php?page=ad

我有一个插件,我正在工作,其中一部分由选项页面上的“条件”下拉列表组成。基本上,我有一个包含三个选项的下拉列表,第二个下拉列表根据第一个下拉列表中选择的内容填充数据库中的信息。问题是,我不知道如何填充第二个下拉列表!我对AJAX不是很在行,但它似乎是一个可能的解决方案。这里经验丰富的开发者有什么想法吗

编辑:这里是我目前的位置,但它似乎从未运行过:

<form action="<?php echo site_url() ?>/wp-admin/admin.php?page=ad_manager&pagetype=addedit&pid=<?php echo $_REQUEST['id']; ?>" method="post" name="ad_success">
    <table cellpadding="5" class="widefat post fixed">
        <thead>
            <tr>
                <th><strong><?php if($_REQUEST['id'] != '') { _e('Edit Ad'); } else { _e('Create Ad'); } ?></strong></th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <label for="gtad_condition">
                        <strong><?php _e('Ad Condition'); ?>:</strong>
                        <select name="ad_condition" id="ad_condition">
                            <option value="">Select an option...</option>
                            <option value="is_city">Is City</option>
                            <option value="is_location">Is Location</option>
                            <option value="is_page">Is Page</option>
                        </select>
                    </label>
                    <label for="gtad_location">
                        <select name="ad_location" id="ad_location"></select>
                    </label>
                </td>
            </tr>
        </tbody>
    </table>
</form>

<script>
    jQuery(document).ready(function() {
        $ad_condition = $("select[name='ad_condition']");
        $ad_location = $("select[name='ad_location']");

        $ad_condition.change(function() {
            if ($(this).val() == "Is City") {
                $("select[name='ad_location'] option").remove();
                $("<option>Test</option>").appendTo($ad_location);
            }
        });
    });
</script>

上面的代码不起作用的原因是因为
$(“mySelect”).val()
返回
值属性,而不是开始标记和结束标记之间的文本。看我的小提琴:

所以,你可以通过改变来解决问题

if ($(this).val() == "Is City") {
进入


当第一个下拉列表发生更改时,使用AJAX填充第二个下拉列表基本上如下所示:

// wait until the first list has changed
$("#list1").change(function(){

    // call a script using AJAX and pass the selected value
    $.post('myScript.php', {myValue: $(this).val()}, function(data){
        // clear the second list
        $("#list2").find("option").remove();

        // add the options based on the 'data' variable
        $("#list2").append('<option value="myOption">' + data + '</option>')
    });

});
//等待第一个列表发生更改
$(“#列表1”).change(函数(){
//使用AJAX调用脚本并传递所选值
$.post('myScript.php',{myValue:$(this).val()},函数(数据){
//清除第二个列表
$(“#列表2”).find(“option”).remove();
//根据“数据”变量添加选项
$(“#列表2”)。追加(“”+数据+“”)
});
});
// wait until the first list has changed
$("#list1").change(function(){

    // call a script using AJAX and pass the selected value
    $.post('myScript.php', {myValue: $(this).val()}, function(data){
        // clear the second list
        $("#list2").find("option").remove();

        // add the options based on the 'data' variable
        $("#list2").append('<option value="myOption">' + data + '</option>')
    });

});