背景:
我写了一个widget,这个widget里有一个form,我要把form里的东西通过ajax打到wordpress处理并返回内容。
步骤:
1、写一个widget
写widget需要继承WP_Widget类,然后重写widget()、update()等方法。
具体可以参考其他的文档来编写一个widget。
在这个widget()里,我加了一段js:
其中需要着重说明的是ajax的url字段和data字段的action字段,其中url为http://your_domain.com/wp-admin/admin-ajax.php,因为要想处理ajax请求,必须打到这个地址。
data字段是要发送的数据嘛,里面必须包含action字段,并且,这个action的值必须是一个名字handler,先放一边。
var ajaxurl = ''; $('#submit').click(function(e){ $.ajax({ type:'post', url:ajaxurl, data:{'action':'handler','a':$('#a').val(),'b':$('#b').val(),'c':$('#c').val()}, cache:false, dataType:'json', success:function(result){ $('.recordimg img').attr("src",result); }, error:function(data){ alert("err"); } }); return false; });
2、编写处理ajax请求的函数
在theme/functions.php里添加如下代码:
首先第一点,这两片段代码中的加粗字体必须一致。
其次钩子函数必须是wp_ajax_* (这个是admin用户的权限)和 wp_ajax_nopriv_*(这个是普通用户的权限)
最后handler()函数里必须有一个 echo 和 wp_die()或die()结束。并且 echo的必须是string类型
function handler(){ echo json_encode("data:image/jpeg;base64,".base64_encode(file_get_contents($pic_folder.'after.jpg')));//这里我返回了一个图片的base64串。 wp_die(); } add_action( 'wp_ajax_handler', 'handler' ); add_action( 'wp_ajax_nopriv_handler', 'handler' );
未经允许不得转载:作者:熊猫大人,
转载或复制请以 超链接形式 并注明出处 熊猫领地。
原文地址:《wordpress 处理 ajax 请求》 发布于2020-03-17
评论 抢沙发