使用 wordpress 处理 ajax 请求响应
Handling ajax request response with wordpress
我已经在我的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部分。
确保已按如下方式对自定义脚本进行排队。如果你的脚本在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');
相关文章:
- 如何发送作为节点请求响应函数中的代码块的响应
- 如何将请求响应传递给另一个请求
- 跟踪循环中触发的请求-响应
- Flux+Rreact.js-缓存API请求响应
- 对 Expressjs / Nodejs 请求 - 响应处理感到困惑
- 用于忽略先前请求响应的前端 JavaScript 模式
- AJAX 调用从我的 REST API 收到“400 错误请求”响应
- 如何为每个 AJAX 请求/响应事件添加回调
- 在 Phonegap 应用程序中,如何指示正在发生对服务器的请求/响应
- Python - 解析请求响应
- 图形 API 嵌套请求响应
- 为什么 AngularJS 指令适用于硬编码值,但使用 http 请求/响应失败
- 如何获取ajax请求响应中存在的图像的位置,并使用位置绘制线
- NodeJS如何在net模块中实现请求/响应
- Node.js编写http请求响应
- 在这样一个请求-响应周期中加载多个JavaScript
- Angular.js请求/响应Node.js
- 为什么在CasperJS中POST请求响应数据为空,即使相同的请求在Postman中显示数据
- 如何避免POST请求响应未知事件码
- AJAX——可以在请求响应上标记到前一个响应的末尾