我正在尝试在所有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));
答案 0 :(得分:0)
我相信这是重复的,如此处的回答:https://wordpress.stackexchange.com/questions/282163/wordpress-ajax-with-axios。使用Qs.js,以下代码应适用于Axios和WordPress。通常,ajaxurl
而非ajax.url
是绑定到/wp-admin/admin-ajax.php
的javascript变量。您可以尝试将其直接指向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);
});