Ajax 根据wordpress中另一个组合框中的选择填充组合框

Ajax 根据wordpress中另一个组合框中的选择填充组合框,ajax,combobox,wordpress,Ajax,Combobox,Wordpress,我想根据wordpress模板中另一个组合框中的选择填充组合框。combobox的选项来自数据库。我使用AJAX从combobox1获取数据,然后将其发送到help.php。在help.php中,有一个用于填充选项的查询,然后显示在combobox2中。但是,当我在combobox1中选择option时,Combox2不响应。此外,combobox1的ID已成功发送。然后我意识到,查询没有被执行。我认为下面的脚本 global $wpdb 这是主要问题。这就是问题所在: 1.如何执行全局$wp

我想根据wordpress模板中另一个组合框中的选择填充组合框。combobox的选项来自数据库。我使用AJAX从combobox1获取数据,然后将其发送到help.php。在help.php中,有一个用于填充选项的查询,然后显示在combobox2中。但是,当我在combobox1中选择option时,Combox2不响应。此外,combobox1的ID已成功发送。然后我意识到,查询没有被执行。我认为下面的脚本

global $wpdb
这是主要问题。这就是问题所在: 1.如何执行全局$wpdb? 2.如果全局$wpdb成功执行,combobox2会自动填充吗

这是表单脚本

<form method="post">
        <table>
            <tr>
                <td width="200px">
                <select name="region" id="region" style="width:200px;">
                    <option value="0">-- Choose --</option>
                    <!-- region -->
                    <?php 
                    if(count( $region )){
                        foreach($region as $reg){
                            echo '<option value='.$reg->id_region.'" >'.$reg->name_region.'</option>';
                        }
                    } else {
                        echo '<option value="">No result</option>';
                    }
                    ?>
                </select></td>
                <td width="200px"><select name="subregion" id="subregion" style="width:200px;">
                    <option value="0">-- Choose --</option> 
                </select>
                </td>
                <td><input type="submit" value="Process" class="button" /></td>
            </tr>
        </table>
    </form>
这里是AJAX

<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript" >      </script>
<script type="text/javascript">
$(document).ready(function(){
    $("#region").change(function(){
        var region = $("#region").val();
        $.ajax({
            url: "<?php bloginfo('template_url'); ?>/help.php" ,
            data: "region=" + region,
            success: function(data){
                $("#subregion").html(data);
            }
        });
    });

});
</script>
下面是help.php

<?php
global $wpdb;

$sub = $_REQUEST['region'];
$table_name = $wpdb->prefix . 'sub_region';
$query = "SELECT * FROM $table_name WHERE id_region='$sub' ";
$sql = $wpdb->get_results( $query);

if(count($sql)){
    foreach( $sql as $q ){
        echo '<option value="'.$q->id_sub_region.'" >'.$q->name_sub_region.'</option>';
    }
} else{
    echo '<option value="0">-- No Result --</option>';
} ?>
添加require_once'../../../wp load.php';在全局$wpdb;之前的help.phpB中的文件开头;。 这将加载所有wordpress内置函数


希望这有帮助。

看起来您需要使用内置的WordPress AJAX功能

我相信最好的方法就是这样:不要使用wp-load.php

这就是我在插件中使用它的方式。要在主题中使用,只需将插件url更改为template或stylesheet目录,并将其放到functions.php文件中

阅读WordPress中的AJAX: 阅读WordPress插件中的AJAX:
function enqueue_scripts_styles_init() {

    // ajax init
    wp_enqueue_script( 'ajax-handle-name', plugins_url( '/js/the-ajax.js', __FILE__ ), array('jquery'), 1.0 );
    // set ajaxurl
    wp_localize_script( 'ajax-handle-name', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );

}
add_action('init', 'enqueue_scripts_styles_init');