如何获得WordPress Ajax$_POST数据的正确php数组格式



我第一次在WordPress中实现ajax,但遇到了一个块,我无法解决问题。感谢您的帮助。

所以我基本上是在尝试将数据传递给WordPress中的ajax回调。

JS:

window.utils.http({
method: 'POST',
url: ajaxurl + '?action=ajax_submit',
json: true,
headers: {
'Content-Type': 'application/json'
},
data: {
test: 'testing123',
quiz_results: {
'a': 1,
'b': 4,
'c': 2
}
},
onload: (response) => {
console.log(response);
},
})

注意:即使使用jQuery的ajax函数,我也会遇到同样的问题

Functions.hp:

function ajax_submit() {
print_r($_POST);
wp_die();
}
add_action('wp_ajax_ajax_submit', 'ajax_submit');
add_action('wp_ajax_nopriv_ajax_submit', 'ajax_submit');

我的JS控制台日志响应:

Array
(
[{"test":"testing123","quiz_results":{"a":0,"b":0,"c":0}}] => 
)

正如您所看到的,php数组的格式不正确,我也无法选择值。如果我echo $_POST['test']echo $_POST[0]->['test'],我什么也得不到。

感谢

有时您无法通过超全局$_POST访问数据。在您的情况下,修改您的ajax_submit功能,如

function ajax_submit() {
// reading raw data from request body
$data = file_get_contents("php://input");
$data = json_decode($data, true);

wp_send_json( $data, 200);
wp_die();
}

有关更多信息,请参阅此答案

尝试wp_send_json()

function ajax_submit() {
print_r($_POST);
wp_send_json( $_POST );
wp_die();
}
add_action('wp_ajax_ajax_submit', 'ajax_submit');
add_action('wp_ajax_nopriv_ajax_submit', 'ajax_submit');

最新更新