通过AJAX从页面获取内容

时间:2013-12-05 作者:agis

我使用的是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为的divtarget, 但当我点击它时,什么都没有发生,我也检查了控制台,没有任何错误。

怎么了?

1 个回复
最合适的回答,由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 如果设置不正确,则无法正常工作。查看页面来源并确认。

结束

相关推荐

如何找出导致(中断)AJAX登录的原因

我继承了一个相当混乱的wordpress网站。就在最近,我的网站开发版本决定使用某种ajax登录,点击登录后会引起一阵骚动,然后什么也不做。我该如何找到这个问题的根源?