ajax与action,WordPress主题开发之wp_ajax_{$action}和wp_ajax_nopriv_{$action}的区别

用admin-ajax.php来处理Ajax请求

Ajax请求应该被指向wp-admin/admin-ajax.php, 文件名中的”admin”可能会引起困惑, 但是不管是前台的还是后台的Ajax请求都是在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;  }

腾讯云限时秒杀【点击购买】

搬瓦工,CN2高速线路,1GB带宽,电信联通优化KVM,延迟低,速度快,建站稳定,搬瓦工BandwagonHost VPS优惠码BWH26FXH3HIQ,支持<支付宝> 【点击购买】!

Vultr$3.5日本节点,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快【点击购买】!

阿里云香港、新加坡VPS/1核/1G/25G SSD/1T流量/30M带宽/年付¥288【点击购买】