我使用的是wordpress主题,我想通过AJAX在页面中加载内容。
我在我的functions.php :
function my_ajax_files()
{
wp_localize_script( \'function\', \'my_ajax_script\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
wp_enqueue_script( \'function\', get_template_directory_uri().\'/my_js_stuff.js\', \'jquery\', true);
}
add_action(\'template_redirect\', \'my_ajax_files\');
function get_my_comments() {
global $current_user;
get_currentuserinfo();
echo \'Username: \' . $current_user->user_login . \'<br />\';
echo \'User display name: \' . $current_user->display_name . \'<br />\';
$args = array(
\'user_id\' => $current_user->ID, // use user_id
\'post_type\' => \'debate\'
);
$comments = get_comments($args);
echo \'<ol class="commentlist">\';
wp_list_comments(
array(
\'per_page\' => 10, //Allow comment pagination
\'reverse_top_level\' => false //Show the latest comments at the top of the list
),
$comments
);
echo \'</ol>\';
}
add_action("wp_ajax_nopriv_get_my_comments", "get_my_comments");
add_action("wp_ajax_get_my_comments", "get_my_comments");
还有这个文件
my_js_stuff.js 包含以下内容:
jQuery(document).ready( function() {
jQuery( "#target" ).click(function() {
jQuery.ajax({
url: my_ajax_script.ajaxurl,
data: ({action : \'get_my_comments\'}),
success: function() {
jQuery("#content").append(data);
}
});
});
});
在我想从函数中获取内容的页面内,我添加了一个id为的div
target, 但当我点击它时,什么都没有发生,我也检查了控制台,没有任何错误。
怎么了?
最合适的回答,由SO网友:s_ha_dum 整理而成
这是正确的方法吗?
这不是正确的方法。
首先,你所做的在概念上没有意义。当您加载该页面时(假设加载正确),您将加载整个WordPress页面,而不仅仅是注释。也就是说,您将加载<html>
一路走来</html>
. 这没有意义。你想要的只是评论。
其次,WordPress提供了一种集中AJAX请求的机制。它被称为AJAX API 一旦你掌握了窍门,你就再也不会尝试其他事情了。Use that.
关于使用AJAX API,该网站上有许多问题,including this one by me.
做一些研究。试着把这件事做好。然后用您遇到的特定问题编辑问题。
编辑:
我看了一下你的编辑,然后。。。
你需要die()
在Ajax回调结束时,per the Codex.
如果my_ajax_script.ajaxurl
如果设置不正确,则无法正常工作。查看页面来源并确认。