WordPress使用 AJAX 将JSON数据发送到REST API

qoefvg9y  于 2023-05-19  发布在  WordPress
关注(0)|答案(1)|浏览(243)

我尝试将json数据发送到一个自定义REST API端点,该端点将简单地返回发送的数据。我不知道我需要做什么来传递这些数据。我现在得到一个空白对象。
PHP代码:

define( 'BRIGHTBRID_PLUGIN_URL', plugin_dir_url( __FILE__ ) );

//Localize/register/enqueue javascript file
add_action( 'init', 'bbwd_enqueu' );
function bbwd_enqueu() {
   wp_register_script( "bright-bridge-custom", BRIGHTBRID_PLUGIN_URL.'assets/brightbridgeweb.js', array('jquery'));
   wp_localize_script( 'bright-bridge-custom', 'bbwdAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));        

   wp_enqueue_script( 'jquery' );
   wp_enqueue_script( 'bright-bridge-custom' );
}

//Add custom REST Endpoint
add_action( 'rest_api_init', function($data) {
  register_rest_route( 'bright-bridge-custom-code/v1', '/test', [
    'methods' => 'POST',
    'callback' => 'test',
  ] );
} );
function test($data){
    return $data;
}

//button to exicute ajax request to REST API 
add_shortcode( 'bp_testing', 'bp_test' );
function bp_test(){
    return "<button onclick='testClick()'>Test Me</h2>";
}

JavaScript代码:

function testClick(){
    let data = ["test", "Test2"]
    
    jQuery.ajax({
            url: window.location.origin+'/wp-json/bright-bridge-custom-code/v1/test', 
            type: "POST",
            data : data,
            success:function(result){
                    console.log(result);
                    },
            timeout: 0,
            error:function(error){
                console.log(error);
            }
        });
    
}
eimct9ow

eimct9ow1#

你在test函数中返回了一个$data对象,这个对象的类型是WP_REST_Request Object,在返回之前,它是以json格式编码的。
因此,要获取除{}(空白)以外的任何对象,可以返回数据库查询的结果或任何其他类型的对象。
例如,通过改变函数:

function test($data){
    return $data;
}

对此:

function test($data){
    return array("a" => 1, "b" => 2);
}

相关问题