簡體   English   中英

如何為 WordPress Ajax $_POST 數據獲取正確的 php 數組格式?

[英]How do I get the correct php array format for WordPress Ajax $_POST data?

我第一次在 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 function,我也會遇到同樣的問題

功能。php:

    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 數組的格式不正確,我也無法獲取 select 值。 如果我echo $_POST['test']echo $_POST[0]->['test']我什么也得不到。

謝謝

嘗試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');

有時您無法通過超全局$_POST訪問數據。 在您的情況下,像這樣修改您的ajax_submit function

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();
}

有關更多信息,請參閱答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM