我想在文档加载后用jQuery加载一些动态数据。 例如,让它成为标签云:
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('#sidebar-tags').load('<?php echo bloginfo('template_url'); ?>/tag_cloud.php');
});
</script>
在tag_cloud.php中是这样的:
<? wp_tag_cloud(''); ?>
并且它不起作用,“内部服务器错误”。 我怎样才能使这个想法奏效?
解决:
跟随Plamen Nikolov的链接,想出了这个:
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery.ajax({
type : "post",
dataType : "json",
url : "/wp-admin/admin-ajax.php",
data : ({action: "get_tag_cloud"}),
success: function(response) {
alert(response);}
})
});
</script>
并在functions.php中:
add_action('wp_ajax_get_tag_cloud', 'get_tag_cloud');
add_action('wp_ajax_nopriv_get_tag_cloud', 'get_tag_cloud');
function get_tag_cloud() {
echo json_encode(wp_tag_cloud('echo=0'));
die();
}
它几乎可以工作:如果我用Firebug检查它,我可以看到响应,但警报不会弹出。
答案 0 :(得分:1)
要发送XHR请求(Ajax),您必须坚持使用正确的钩子推荐的方式:
请参阅此处的示例:WordPress Ajax hooks
答案 1 :(得分:0)
tag_cloud.php中的代码功能错误,它会响应内部服务器错误。为了开发wordpress小部件,您可以查看以下教程
http://wp.tutsplus.com/tutorials/plugins/creating-a-wordpress-network-widget
另外请确保,您在jquery加载函数中调用了正确的url。
答案 2 :(得分:0)
$("#sidebar").html($.get('<?php echo bloginfo("template_url"); ?>/tag_cloud.php');
您必须绕template_url
转义单引号或使用双引号。阅读服务器日志以进行进一步调试。