我在我的 wordpress 插件中完成了一个 ajax 请求。我的请求基于以下步骤:
1) 我正在包含 js 文件并在准备就绪时启动请求文档
2)在 php 端,我想接受这个请求并将其打印出来进行测试。
为了所有这些东西我写了这些代码:
主要.js:
$(function(){
$.post('/wp-content/plugins/dsn/functions.php',{token:"1tibu4"},function(data) {
console.log(data);
},"json");
});
函数.php:
<?php
add_action('loop_end', 'init');
function init(){
global $_POST;
$post= $_POST;
echo json_encode($post);Exit;
}
我的问题是,当请求完成时,控制台屏幕的响应选项卡上没有任何内容。这是怎么发生的?
最佳答案
WordPress 有一种处理 AJAX 的独特方式。如果您直接向 php 文件发出请求,那么您将不会加载 WordPress 框架的其余部分,并且您将无法使用许多 WordPress 特定功能。
在 PHP 方面,您需要做的是使用如下所示的代码:
//for logged in users
add_action('wp_ajax_my_action', 'my_action_callback');
//for not logged in users
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
function my_action_callback() {
//your function here
exit; //always call exit at the end of a WordPress ajax function
}
在 JS 端,您需要将请求发送到名为“wp-admin/admin-ajax.php”的文件
所以你的请求看起来像这样(使用 jQuery):
$.ajax({
url : '/wp-admin/admin-ajax.php',
type : 'get', //or 'post'
data : {
action: 'my_action_callback'
}
})
.fail(function(r,status,jqXHR) {
console.log('failed');
});
.done(function(r,status,jqXHR) {
console.log('success');
});
注意 my_action_callback 部分。
关于php - 使用wordpress处理ajax请求响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14521423/