wordpress的ajax请求返回数据用什么内置函数

在 WordPress 中处理 AJAX请求返回数据 时,WordPress主题已经为开发者提供了几组非常方便的内置函数,用于安全、规范地返回数据给前端。

以下是最常用的几个内置函数及其使用场景:


一、wp_send_json() —— 返回 JSON 数据(最常用)

用途:
当你希望返回一段 JSON 格式的数据给前端时使用。
它会自动设置 Content-Type: application/json,并结束执行(wp_die())。

语法:

wp_send_json( $response );

示例:

add_action( 'wp_ajax_get_product_data', 'my_get_product_data' );
add_action( 'wp_ajax_nopriv_get_product_data', 'my_get_product_data' );

function my_get_product_data() {
    $data = array(
        'status'  => 'success',
        'message' => '获取成功',
        'product' => array(
            'name' => 'WordPress T-shirt',
            'price' => 99
        ),
    );
    wp_send_json( $data );
}

特点:

  • 自动设置 HTTP Header;
  • 自动调用 wp_die()
  • 不需要再手动 echo json_encode()
  • 推荐在 WordPress AJAX 返回中使用。

二、wp_send_json_success() —— 返回成功状态的 JSON

用途:
这是 wp_send_json() 的一个快捷版本,适合返回操作成功的结果。

语法:

wp_send_json_success( $data = null, $status_code = null );

示例:

function my_save_form() {
    $result = array( 'msg' => '表单提交成功!' );
    wp_send_json_success( $result );
}

返回的 JSON 结构为:

{
  "success": true,
  "data": {
    "msg": "表单提交成功!"
  }
}

三、wp_send_json_error() —— 返回错误状态的 JSON

用途:
wp_send_json_success() 相反,用于返回操作失败或错误提示。

语法:

wp_send_json_error( $data = null, $status_code = null );

示例:

function my_save_form() {
    if ( empty( $_POST['name'] ) ) {
        wp_send_json_error( array( 'msg' => '姓名不能为空!' ) );
    }
}

返回的 JSON 结构为:

{
  "success": false,
  "data": {
    "msg": "姓名不能为空!"
  }
}

四、wp_die() —— 手动结束请求(旧方式)

在旧版 WordPress 或手动返回时,你可能会看到这种写法:

echo json_encode( $data );
wp_die();

虽然这在技术上可行,但现在官方更推荐使用 wp_send_json() 系列函数,因为它更安全、更规范。


推荐实践总结:

目的推荐函数说明
返回任意 JSON 数据wp_send_json()最通用
返回成功结果wp_send_json_success()自动加 "success": true
返回错误信息wp_send_json_error()自动加 "success": false
手动输出并终止wp_die()不推荐,旧方法

前端调用示例(使用 jQuery):

jQuery.ajax({
    url: ajaxurl, // WordPress 会在前端定义 ajaxurl 变量
    type: 'POST',
    data: {
        action: 'get_product_data'
    },
    success: function(response) {
        if (response.success) {
            console.log('商品信息:', response.data.product);
        } else {
            alert(response.data.msg);
        }
    }
});

我爱主题网 自2012
主题:260+ 销售:1000+
兼容浏览器

电话咨询

7*12服务咨询电话:

1855-626-3292

微信咨询