我正在尝试从React发送ajax请求。wordpress的管理ajax的js应用程序。php。下面是我编写的一个小型测试插件,用于测试:
// plugins folder > xhrLink/xhrLink.php
<?php
/*
Plugin Name: Xhr Link
*/
function basicPage() {
echo "<h1>Admin Page</h1>";
}
function setupParams() {
add_options_page(\'XHR Link\', \'XHR Link\', \'manage_options\', \'xhr-link\', \'basicPage\');
}
add_action(\'admin_menu\', \'setupParams\');
function handleXhrLink() {
wp_send_json(\'this response came from the back end\');
}
add_action(\'wp_ajax_xhrLink\', \'handleXhrLink\');
// theme folder > functions.php
function add_cors_http_header() {
header("Access-Control-Allow-Origin: *");
}
add_action(\'init\',\'add_cors_http_header\');
在React中。js app I将以下函数设置为在按钮的onClick属性上启动:
const sendXhrLinkRequest = () => {
let form_data = new FormData;
form_data.append(\'action\', \'xhrLink\');
axios
.post(\'http://localhost/wptest2/wp-admin/admin-ajax.php\', form_data)
.then(response => {
console.log(response, `=====sendXhrLinkRequest response=====`);
});
};
发件人
WordPress AJAX with Axios:
FormData接口提供了一种方法,可以轻松构建一组表示表单字段及其值的键/值对,然后可以使用XMLHttpRequest轻松发送这些键/值对。send()方法。如果编码类型设置为“多部分/表单数据”,则它使用与表单相同的格式。
单击按钮后,Chrome控制台显示以下内容:
VM596:1 POST http://localhost/wptest2/wp-admin/admin-ajax.php 400 (Bad Request)
(anonymous) @ VM596:1
VM596:1 XHR failed loading: POST "http://localhost/wptest2/wp-admin/admin-ajax.php".
createError.js:16 Uncaught (in promise) Error: Request failed with status code 400
at createError (createError.js:16)
at settle (settle.js:17)
at XMLHttpRequest.handleLoad (xhr.js:59)
有人知道这些错误的原因以及如何处理吗?
还尝试了:
将表单数据作为JSON对象提交。产生了相同的控制台条目