哆麦CMS异步请求教程

首页 > 主题开发 > 哆麦CMS异步请求教程

浏览器中的异步请求是指不影响页面加载和渲染的请求,常称之为ajax,在实践中通常把页面中一些不太重要的元素用异步请求进行加载,也有一些把全部网站数据都用异步请求获取,通过JS引擎渲染的,哆麦也支持这样做,不在这篇文章的讨论范围内。

异步请求的应用范围

对于营销网站来说,网站与用户的交互请求不是那么强烈,通过只需要展示一些网页内容,这些内容对所有用户来说都是一样的,所以我们通过缓存的形式节省硬件投入。但页面缓存之后,就不是每时每刻都会更新,难免会存在滞后的现象,例如本网站中内容的阅读数量和喜欢数量,因为我的页面进行缓存了,所以不是每个请求都会被后台程序接收到,但是我又需要统计文章的阅读数量和喜欢的数量,这时候异步请求的作用就凸现了。

发起异步请求

哆麦CMS的异步请求处理文件为根目录下的“dm-ajax.php”,在模板中你可以通过dminfo('ajax_url')获取异步请求的地址,每个异步请求都接收一个必须的参数action,通过GET或者POST方法传送,前端一个典型的异步请求如下(通过jquery实现):

$.ajax(
    type: 'GET',
    url: '<?php dminfo('ajax_url')?>',
    data: {action: 'get_post', post_id: 1},
    dataType: 'json',
   success: function(data){
        alert(data);
   }
);

上面这个请求的action名为‘get_post’, 还发送了一个post_id为1的参数。

前端发送请求之后,需要后端进行处理,需要在主题的functions.php文件中添加代码,把相应的处理函数挂在到对应的钩子上,哆麦CMS挂载处理函数的用法为:

add_action('ajax_admin_action', '函数名'); //这个钩子为用户登陆情况下的处理函数,优先级最高

add_action('ajax_action', '函数名'); //这个钩子为普通处理函数

你需要把上述的action改成前端发送的action名,一个典型的处理如下:

<?php
function get_post_ajax(){
      $post = get_post($_POST['post_id']);
      header("Content-Type:application:json");
      echo json_encode($post);
}
add_action('ajax_get_post', 'get_post_ajax');

需要注意的是,所以添加的函数,不能和系统已有的函数名出现冲突。

上一篇: 哆麦CMS图库开发教程 下一篇:
134人阅读过这篇文章,11人喜欢。

发表评论

评论列表