jquery - Wordpress POST 请求使用 XMLHttp 和 Axios 失败,但适用于 jQuery。有什么不同?
问题描述
我正在尝试在我所有的 Wordpress 网站上替换 jQuery。
我有一个简单的处理程序example_handler
,它应该返回“Hello World!”
function example_handler() {
echo 'Hello World!';
wp_die();
}
add_action('wp_ajax_nopriv_example_handler','example_handler');
add_action('wp_ajax_example_handler','example_handler');
当我使用jQuery时,我得到了预期的响应:
const data = {action: 'example_handler'}
jQuery.post(ajax.url,data,r => {console.log(r);});
使用Axios时出现 400 错误:
axios.post(ajax.url, {
action: 'bp_contact_form_handler'
})
.then(r => {
console.log(r);
})
.catch(e => {
console.log(e);
});
当我使用XMLHttp时,出现 400 错误:
const request = new XMLHttpRequest();
request.open('POST',ajax.url,true);
request.setRequestHeader("Content-Type", "application/json");
request.onload = () => {
const response = JSON.parse(request.response);
console.log(request.response);
};
request.send(JSON.stringify(data));
解决方案
我相信这是在这里回答的重复:https ://wordpress.stackexchange.com/questions/282163/wordpress-ajax-with-axios 。使用Qs.js,以下代码应该适用于 Axios 和 WordPress。javascript 变量通常也ajaxurl
不会ajax.url
绑定到/wp-admin/admin-ajax.php
. 您可以尝试将其直接指向 admin-ajax.php 以排除潜在问题。
var data = {
action: 'bp_contact_form_handler'
};
axios.post( ajaxurl, Qs.stringify( data ) )
.then(r => {
console.log(r);
})
.catch(e => {
console.log(e);
});
推荐阅读
- reactjs - 更新状态时出错(跳过状态的构造函数)
- c - 从程序集 x86 32 位调用 c 函数时未定义的引用
- android - 带有 Proguard 的 Android Swagger 客户端
- selenium - 无法使用硒右键单击新选项卡中的选项打开链接
- apache - serer迁移后未加载apache2默认主页
- reactjs - 是否需要显式导入组件?
- selenium - 如何找到具有整个文本为动态的元素的xpath
- sql-server - 如何在 C#.net 中传递带有值的输出参数?
- laravel - 如何获取Array的数据
- react-native - 现有应用程序最佳实践中的 React Native 集成