所以我正在尝试构建一个非常简单的东西——一个具有州和区域的表单,当你选择一个州时,它会填充区域列表。我的表单有两个菜单,#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);
伙计们,我已经无计可施了。我错过了什么?