wp_send_json_success()

Отправляет JSON-ответ на запрос Ajax, указывая на успех
Функция WordPress
INT 3.5.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Отправка успешного JSON-ответа с данными
  4. Установка HTTP-статуса для успешного JSON-ответа
  5. Настройка опций для кодирования JSON
  6. Обработка пустых данных
  7. Использование функции wp_send_json_success() в плагинах
  8. Интеграция функции wp_send_json_success() с AJAX-запросами
  9. Вопросы и ответы
  10. Как отправить успешный JSON-ответ в Ajax-запросе?
  11. Как указать данные для кодирования в JSON при использовании функции wp_send_json_success()?
  12. Как указать HTTP-код состояния при использовании функции wp_send_json_success()?
  13. Какие опции можно передать в функцию wp_send_json_success() для json_encode()?
  14. Как обработать ошибку при использовании функции wp_send_json_success()?
  15. Можно ли использовать функцию wp_send_json_success() без Ajax-запроса?
  16. Какие данные могут быть переданы в функцию wp_send_json_success()?
  17. Какие другие функции могут быть использованы вместо wp_send_json_success() для отправки JSON-ответа?
  18. Связанные элементы

Описание функции

Функция wp_send_json_success() отправляет JSON-ответ на запрос Ajax, указывая успешное выполнение.

Функция используется для отправки ответа на Ajax-запрос, когда операция выполнилась успешно. Она кодирует переданные данные в формат JSON, выводит и завершает выполнение скрипта.

Использование

wp_send_json_success( mixed $data = null, int $status_code = null, int $options )

Функция принимает три параметра:

  • $data (mixed) — Данные, которые необходимо закодировать в JSON, а затем вывести и завершить выполнение скрипта. По умолчанию: null.
  • $status_code (int) — Код состояния HTTP, который будет выведен. По умолчанию: null.
  • $options (int) — Опции, передаваемые в функцию json_encode(). По умолчанию: 0.

$data = array(
    'message' => 'Запрос успешно выполнен',
    'data' => array(
        'name' => 'John Doe',
        'age' => 30
    )
);
$status_code = 200;
$options = JSON_PRETTY_PRINT;
wp_send_json_success( $data, $status_code, $options );

В данном примере мы создаем массив данных, который будет закодирован в JSON и отправлен в ответ на Ajax-запрос. Массив содержит сообщение и дополнительные данные. Код состояния HTTP установлен равным 200, что означает успешное выполнение запроса. Опция JSON_PRETTY_PRINT используется для форматирования JSON-ответа с отступами и переносами строк.

Примеры использования

Отправка успешного JSON-ответа с данными


/**
 * Отправляет JSON-ответ об успешном выполнении Ajax-запроса с данными.
 *
 * @param mixed $data Данные для кодирования в JSON, затем вывода и завершения работы.
 *                    По умолчанию: null
 * @param int $status_code Код состояния HTTP для вывода.
 *                         По умолчанию: null
 * @param int $options Опции, передаваемые в json_encode().
 *                     По умолчанию: 0
 */
function wp_send_json_success( $data = null, $status_code = null, $options = 0 ) {
    // Кодируем данные в JSON
    $json_data = json_encode( $data, $options );
    // Устанавливаем заголовок Content-Type
    header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
    // Устанавливаем код состояния HTTP, если указан
    if ( null !== $status_code ) {
        status_header( $status_code );
    }
    // Выводим данные в формате JSON и завершаем работу
    echo $json_data;
    wp_die();
}

Установка HTTP-статуса для успешного JSON-ответа


// Устанавливаем HTTP-статус 200 (OK) для успешного JSON-ответа
wp_send_json_success( $data, 200 );

Настройка опций для кодирования JSON


// Устанавливаем опцию JSON_PRETTY_PRINT для красивого форматирования JSON
$options = JSON_PRETTY_PRINT;
// Отправляем успешный JSON-ответ с данными и опцией JSON_PRETTY_PRINT
wp_send_json_success( $data, null, $options );

Обработка пустых данных


// Отправляем успешный JSON-ответ без данных
wp_send_json_success();

Использование функции wp_send_json_success() в плагинах


// Включаем хук, который вызывает функцию wp_send_json_success()
add_action( 'wp_ajax_my_action', 'my_ajax_callback' );
/**
 * Обработчик Ajax-запроса
 */
function my_ajax_callback() {
    // Обработка запроса
    // Отправляем успешный JSON-ответ с данными
    wp_send_json_success( $data );
}

Интеграция функции wp_send_json_success() с AJAX-запросами


// Отправляем AJAX-запрос на сервер
jQuery.ajax({
    url: ajaxurl,
    type: 'POST',
    data: {
        action: 'my_action',
        // Дополнительные данные
    },
    success: function( response ) {
        // Обработка успешного ответа
        // Выводим данные из JSON-ответа
        console.log( response.data );
    }
});

Вопросы и ответы

Как отправить успешный JSON-ответ в Ajax-запросе?

Для отправки успешного JSON-ответа в Ajax-запросе в WordPress используется функция wp_send_json_success(). Она отправляет JSON-ответ, указывая успешное выполнение запроса.


wp_send_json_success( $data );

Как указать данные для кодирования в JSON при использовании функции wp_send_json_success()?

Для указания данных, которые нужно закодировать в JSON при использовании функции wp_send_json_success(), передайте эти данные в качестве аргумента $data. Эти данные будут закодированы в JSON, выведены и завершат выполнение скрипта.


$data = array( 'message' => 'Hello, World!' );
wp_send_json_success( $data );

Как указать HTTP-код состояния при использовании функции wp_send_json_success()?

При использовании функции wp_send_json_success() можно указать HTTP-код состояния, который будет возвращен вместе с JSON-ответом. Для этого передайте код состояния в качестве аргумента $status_code.


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

Какие опции можно передать в функцию wp_send_json_success() для json_encode()?

Функция wp_send_json_success() позволяет передавать опции в функцию json_encode(). Для этого передайте опции в качестве аргумента $options. По умолчанию опции равны 0.


$options = JSON_PRETTY_PRINT;
wp_send_json_success( $data, $status_code, $options );

Как обработать ошибку при использовании функции wp_send_json_success()?

Функция wp_send_json_success() не вызывает ошибок, поэтому обработка ошибок при ее использовании не требуется.

Можно ли использовать функцию wp_send_json_success() без Ajax-запроса?

Функция wp_send_json_success() предназначена для использования только в Ajax-запросах. Она отправляет JSON-ответ об успешном выполнении запроса.

Какие данные могут быть переданы в функцию wp_send_json_success()?

В функцию wp_send_json_success() можно передать любые данные для кодирования в JSON и отправки в ответе. Параметр $data является необязательным и по умолчанию равен null.

Пример использования функции с передачей данных:


$data = array(
    'name' => 'John',
    'age' => 30,
);
wp_send_json_success( $data );

Какие другие функции могут быть использованы вместо wp_send_json_success() для отправки JSON-ответа?

Вместо функции wp_send_json_success() можно использовать функцию wp_send_json(). Она также отправляет JSON-ответ, но не указывает статус успешного выполнения запроса.

Пример использования функции wp_send_json():


$data = array(
    'name' => 'John',
    'age' => 30,
);
wp_send_json( $data );

Функция wp_send_json_success() предназначена для отправки JSON-ответа об успешном выполнении Ajax-запроса. Она принимает данные для кодирования в JSON и отправки, а также может указывать HTTP-статус ответа. Вместо wp_send_json_success() можно использовать wp_send_json().

Связанные элементы

  • Функция wp_send_json(): Отправляет JSON-ответ обратно на Ajax-запрос.
  • Функция wp_die(): Выводит сообщение и останавливает выполнение скрипта.
  • Функция wp_send_json_error(): Отправляет JSON-ответ обратно на Ajax-запрос, указывая на ошибку.
  • Хук wp_ajax_{$action}: Вызывается при выполнении Ajax-запроса с заданным действием.
  • Хук wp_ajax_nopriv_{$action}: Вызывается при выполнении Ajax-запроса с заданным действием для неавторизованных пользователей.
  • Класс WP_Http: Предоставляет методы для работы с HTTP-запросами.
  • Класс WP_Ajax_Response: Предоставляет методы для работы с Ajax-ответами.
Обсуждение