Why use wp_send_json() over echo json_encode()?

When sending a JSON response back to an AJAX request, why use the WordPress function wp_send_json() and not echo json_encode()? What is the benefit of using the WordPress function wp_send_json() over echo json_encode()?

Ref: wp_send_json


wp_send_json() handles all parts of returning content in an AJAX call. First off, it sets the content type of the returned content to application/json with the proper charset. Secondly, it automatically calls wp_die() after sending the JSON result, which is necessary in an AJAX call in WordPress.

You could consider using wp_send_json_success() for successful requests and wp_send_json_error() for erroneous requests, thereby adhering to the WordPress standards for handling AJAX requests. These functions set a success (boolean) and data (any type) key in an array and encode that entire array, thereby allowing you easily check in a structured way whether the request was successful or whether something went wrong.

Leave a Comment