Wordpress ajax从自定义表中获取数据

时间:2016-01-11 23:15:02

标签: mysql ajax wordpress

我正在尝试学习如何通过wordpress ajax从自定义数据库表中获取内容,但不知道如何执行此操作。

我想从下表中获取id数量

Database name: wp_ajax_demo
Column  Type    Comment
id  int(11) Auto Increment   
name    varchar(255)

这是我到目前为止的代码,但不确定我是否在正确的轨道上

function post_word_count(){
global $wpdb;
$wpdb->get_var($wpdb->prepare("my query here")); //not sure what to add here
die();
return true;
}
add_action('wp_ajax_post_word_count', 'post_word_count');
add_action('wp_ajax_nopriv_post_word_count', 'post_word_count');

我的Ajax

jQuery.ajax({
type: 'POST',   // Adding Post method
url: MyAjax.ajaxurl, // Including ajax file
//action: "ajaxConversion",
data: {"action": "post_word_count", "dname":name}, //Not sure what to add here
success: function (data) {
        alert(data);
      },
      error: function () {
       // 
      },
      complete: function () {
        //
      }
});
});

我的更新代码,但只返回jason格式化结果,而不是添加到我的html echo行,整个wordpress页面不显示不确定原因。

function post_word_count2(){
global $wpdb;
$count = $wpdb->get_var( "Select count(*) from {$wpdb->base_prefix}ajax_demo" ); 
wp_send_json_success( array(
    'count' => $count
));
die();
return true;
}
add_action('wp_ajax_post_word_count', 'post_word_count2');
add_action('wp_ajax_nopriv_post_word_count', 'post_word_count2');

post_word_count2();

echo '<button type="button" class="btn btn-primary">Primary <span class="badge">'.$count.'</span></button>';

我的Ajax

jQuery(document).ready(function(){

jQuery.ajax(
{
    type        : 'POST',
    //dataType    : 'json',
    url         : MyAjax.ajaxurl,
    data        : {"action": 'post_word_count2'},
    success: function( data ) 
    {
       // if( response.success ) 
      //  {
           alert( response.data.count );
       // }
    }
});  

});

1 个答案:

答案 0 :(得分:0)

post_word_count函数中:

$count = $wpdb->get_var( "Select count(*) from {$wpdb->base_prefix}ajax_demo" ); 
wp_send_json_success( array(
    'count' => $count,
) );

在jquery文件中:

$.ajax(
{
    type        : 'post',
    dataType    : 'json',
    url         : MyAjax.ajaxurl,,
    data        : {
        action      : 'post_word_count', 
    },
    success: function( response ) 
    {
        if( response.success ) 
        {
           alert( response.data.count );
        }
    }
} );