我正在编写一个插件,该小部件包含下拉列表,需要根据前一个下拉列表的选定值,使用AJAX从数据库中检索每个连续下拉列表的值。
我将从WordPress codex中稍微修改一下代码:http://codex.wordpress.org/AJAX_in_Plugins
由于某种原因,未调用action函数或我的代码中存在一些错误:
// add action hooks
add_action('wp_footer', 'er_qm_ajax_handler' );
add_action('wp_ajax_repopulate_widget_club_type', 'repopulate_widget_club_type');
add_action('wp_ajax_nopriv_repopulate_widget_club_type', 'repopulate_widget_club_type');
// action for the wp_footer hook to insert the javascript
function er_qm_ajax_handler(){
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
jQuery('#widget_manufacturer').val('3').change(function(){
var manufacturer = $("#widget_manufacturer").val();
var data = {
action: 'repopulate_widget_club_type',
selected_manufacturer: manufacturer
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
jQuery.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
});
});
</script>
<?php
}
// The action function
function repopulate_widget_club_type(){
die("Got to the action");
}
由于我没有得到AJAX帖子的响应,我不知道我做错了什么,我知道jQuery .change()正在工作,因为我设置了一些alert()来测试它一旦我改变了下拉列表列出值。
非常感谢任何想法和帮助,谢谢!
答案 0 :(得分:1)
你需要像这样定义ajaxurl的值:
var ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ); ?>'
在javascript的全局范围内定义它是可以忍受的,因此在此行之前:
jQuery(document).ready(function($) {