Php 用wordpress处理ajax请求响应
我在wordpress插件中完成了一个ajax请求。我的请求基于以下步骤: 1)我正在包括js文件并在ready上启动请求文档 2)在php端,我想接受这个请求并将其打印出来进行测试。 对于所有这些东西,我写了以下代码: main.js:Php 用wordpress处理ajax请求响应,php,javascript,wordpress,request,Php,Javascript,Wordpress,Request,我在wordpress插件中完成了一个ajax请求。我的请求基于以下步骤: 1)我正在包括js文件并在ready上启动请求文档 2)在php端,我想接受这个请求并将其打印出来进行测试。 对于所有这些东西,我写了以下代码: main.js: $(function(){ $.post('/wp-content/plugins/dsn/functions.php',{token:"1tibu4"},function(data) { console.log(data);
$(function(){
$.post('/wp-content/plugins/dsn/functions.php',{token:"1tibu4"},function(data) {
console.log(data);
},"json");
});
functions.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):
请注意my_action_回调部分。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):
请注意my_action_回调部分。请确保已按如下方式将自定义脚本排入队列。如果在自定义注入Wordpress jQuery脚本之前包含脚本,则代码可能无法正常工作
function my_scripts_method() {
wp_enqueue_script(
'custom-script',
get_template_directory_uri() . '/js/main.js',
array('jquery')
);
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
确保已按如下方式将自定义脚本排入队列。如果在自定义注入Wordpress jQuery脚本之前包含脚本,则代码可能无法正常工作
function my_scripts_method() {
wp_enqueue_script(
'custom-script',
get_template_directory_uri() . '/js/main.js',
array('jquery')
);
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
你有问题吗?你是说代码没有达到你期望的效果吗?对不起,我编辑了我的问题检查你的PHP错误日志,有没有错误?控制台说响应代码是什么?200, 500, 404? 这是回应的屏幕截图。我猜它成功返回了200。你有问题吗?你是说代码没有达到你期望的效果吗?对不起,我编辑了我的问题检查你的PHP错误日志,有没有错误?控制台说响应代码是什么?200, 500, 404? 这是响应的屏幕截图。我想它成功地返回了200。谢谢你的回复,我尝试了你的方式,但是当页面加载没有ajax请求时,如果没有发送ajax请求,那是因为你没有发送它。这与我提供的答案没有任何关系。我不认为上面的代码是正确的,但这个想法是完全正确的,谢谢亚当。有关当前的说明,请参阅。请更改此操作现在不起作用。添加操作(“wp\u ajax\u nopriv\u my\u action”、“my\u action\u callback”);感谢您的回复,我尝试了您的方式,但是当页面没有加载ajax请求时,如果没有发送ajax请求,那是因为您没有发送它。这与我提供的答案没有任何关系。我不认为上面的代码是正确的,但这个想法是完全正确的,谢谢亚当。有关当前的说明,请参阅。请更改此操作现在不起作用。添加操作(“wp\u ajax\u nopriv\u my\u action”、“my\u action\u callback”);