wordpress 如何处理 ajax 请求
1.其中需要着重说明的是ajax的url字段和data字段的action字段,其中url为http://your_domain.com/wp-admin/admin-ajax.php,因为要想处理ajax请求,必须打到这个地址。
data字段是要发送的数据嘛,里面必须包含action字段,并且,这个action的值必须是一个名字handler(可自定义),先放一边。
js部分:
var ajaxurl ='<?php echo admin_url('admin-ajax.php')?>';
$('#showding').click(function(e){
var ip = returnCitySN['cip'];
$.ajax({
type:'post',
url:ajaxurl,
data:{'action':'handler',
'id' :"<?php echo $id;?>",
'type':'showding',
'ip': ip
},
cache:false,
dataType:'json',
success:function(res){
console.log(res.code)
},
error:function(data){
console.log("ajax请求失败");
}
});
return false;
});
2.编写处理ajax请求的函数
在theme/functions.php里添加如下代码:
首先第一点,这两片段代码中的加粗字体必须一致。
其次钩子函数必须是wp_ajax_* (这个是admin用户的权限)和 wp_ajax_nopriv_*(这个是普通用户的权限)
最后handler()函数里必须有一个 echo 和 wp_die()或die()结束。并且 echo的必须是string类型
functions.php 添加代码:
function handler(){
if (empty($_POST['id'])){
$arr = ['code'=>0,"msg"=>"操作失败,请联系管理员"];
echo wp_send_json($arr);
}else{
echo 1;
}
wp_die();//必须带
}
add_action( 'wp_ajax_handler', 'handler' );//必须带
add_action( 'wp_ajax_nopriv_handler', 'handler' );
基本上这时候就可以了