1

所以我正在尝试构建一个非常简单的东西——一个具有州和区域的表单,当你选择一个州时,它会填充区域列表。我的表单有两个菜单,#select-region(状态)和#select-area。这是我的 .js 文件中包含的 jQuery 代码:

jQuery(document).ready(function() {
    jQuery("#select-region").change(function(){
    //alert(jQuery("#select-region").val());
    regionID = jQuery("#select-region").val();
    jQuery.ajax({
            type: 'POST',
            url: 'http://dev.sitename.com/wp-admin/admin-ajax.php',
            data: {
                action: 'get_area_menu',
                region_id: regionID,
            },
            success: function(data, textStatus, XMLHttpRequest){
                jQuery("#select-area").html('');
                jQuery("#select-area").append(data);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown){
                alert(errorThrown);
            }
        });
     });
});

'get_area_menu()' 函数在我的functions.php 文件中。这是代码:

function get_area_menu($region_id){
    $areas = get_areas($region_id);

    $menu_output = "<option>" . count($areas) . "</option>";
    foreach($areas as $area) {
        $menu_output = $menu_output . "<option value=" . $area['area_id'] . ">" . $area['name'] . "</option>";
    }
    die($menu_output);
}
add_action('wp_ajax_get_area_menu', 'get_area_menu');
add_action('wp_ajax_nopriv_get_area_menu', 'get_area_menu');

`

现在,我已经验证了在将 region_id 传递给它时,上述函数中调用的 'get_areas()' 函数工作正常,但由于某种原因,region_id 变量没有从 AJAX 传递到 get_area_menu()称呼。FWIW,我已将脚本排入队列并将其本地化(尽管我仍然不知道这实际上意味着什么),并在 functions.php 顶部附近使用此代码:

wp_enqueue_script('jquery');
wp_enqueue_script('sitename', get_template_directory_uri() . '/scripts/sitename.js');
wp_localize_script( 'sitename', get_template_directory_uri() . '/scripts/sitename.js', $params);

伙计们,我已经无计可施了。我错过了什么?

4

1 回答 1

1

我唯一能看到的是在你的get_area_menu函数中改变这一行

$areas = get_areas(isset($_POST['region_id']) ? $_POST['region_id'] : $region_id);
于 2013-04-05T15:28:46.330 回答