好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

WordPress中利用admin-ajax.php实现Ajax功能 - WordPress

WordPress中利用admin-ajax.php实现Ajax功能

用这个文件进行 Ajax 的好处主要有几点:

安全: WordPress 本身进行了很复杂的安全性优化,如果我们都自己写是很浪费时间和资源的.

兼容: 由于文件是公用的,提供了通用的钩子,其它插件都可以参与进去.

高效: 这个不解释了,既符合原则(执行到了 init 钩子),又兼顾了效率问题.

方便: 一个钩子即可输出代码,都不用判断条件.

基本就这几点了,网上查了一下,发现关于此文件的资料并不多,于是看了下源码,发现使用其实很简单.

首先请求这个文件:echo admin_url( 'admin-ajax.php' );

向admin-ajax.php发送请求的时候,有一个必须的参数是action,因为admin-ajax.php需要根据用户是否登陆了来触发不同的hooks,代码如下:

// 如果没登陆, 会触发这个hook   do_action(  'wp_ajax_nopriv_'  .  $_REQUEST [ 'action' ] );    // 如果登陆了, 会触发这个hook   do_action(  'wp_ajax_'  .  $_POST [ 'action' ] );  发出Ajax请求的代码大概如下:    jQuery.post(         MyAjax.ajaxurl,         {              action :  'myajax-submit' ,             postID : MyAjax.postID         },          function ( response ) {              alert( response );         }  ); 

现在,我们只需要在我们的主题文件中处理一下Ajax请求,并不需要在单独的文件中来处理,代码如下:

add_action(  'wp_ajax_nopriv_myajax-submit' ,  'myajax_submit'  );  add_action(  'wp_ajax_myajax-submit' ,  'myajax_submit'  );    function  myajax_submit() {    $postID  =  $_POST [ 'postID' ];    $response  = json_encode(  array (  'success'  => true ) );     header(  "Content-Type: application/json"  );    echo   $response ;      // 这个很关键啊有木有: 别忘记 "exit"     exit ;  } 

在登录和未登录的情况下会分别调用 wp_ajax_nopriv_action参数内容 和 wp_ajax_action参数内容,所以在这里输出即可,具体可以研究下 admin-ajax.php 文件.

查看更多关于WordPress中利用admin-ajax.php实现Ajax功能 - WordPress的详细内容...

  阅读:55次