Как принять данные от запроса, отправленного с помощью JQuery.ajax, на стороне сервера с использованием PHP?

Как исправить проблему с обработкой данных на сервере при использовании jQuery через action в Wordpress?
  • 16 апреля 2024 г. 19:20
Ответы на вопрос 2
Для принятия данных от запроса, отправленного с помощью JQuery.ajax на стороне сервера с использованием PHP, можно использовать следующий код:

```php
// Проверяем, были ли отправлены данные методом POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Получаем данные из запроса
    $data = json_decode(file_get_contents('php://input'), true);

    // Обрабатываем полученные данные
    // Например, можно сохранить их в базу данных
}
```

Чтобы исправить проблему с обработкой данных на сервере при использовании jQuery через action в Wordpress, следует убедиться, что в запросе указан URL с адресом файла-обработчика на сервере, который будет обрабатывать данные. Например:

```javascript
jQuery.ajax({
    url: '/wp-admin/admin-ajax.php',
    type: 'POST',
    data: {
        action: 'my_custom_action', // название action, который будет обрабатываться на сервере
        data: myData // данные для передачи на сервер
    },
    success: function(response) {
        console.log('Данные успешно обработаны на сервере');
    }
});
```

На стороне сервера в Wordpress нужно создать функцию, которая будет обрабатывать переданные данные:

```php
function my_custom_action_handler() {
    // Получаем данные из запроса
    $data = $_POST['data'];

    // Обрабатываем полученные данные
    // Например, можно записать их в базу данных или выполнить другие действия

    wp_die(); // завершаем выполнение скрипта
}

// Регистрируем action в Wordpress
add_action('wp_ajax_my_custom_action', 'my_custom_action_handler');
add_action('wp_ajax_nopriv_my_custom_action', 'my_custom_action_handler');
```

Теперь при отправке запроса с указанным action в Wordpress данные будут обрабатываться правильно на сервере.
На сервере пытаюсь принять так:
Нет, ищите в $_POST

header: 'Content-Type: application/json', а это лишнее.

А вообще нужно уметь открыть инструменты хорма и посмотреть в нетворке что и как отправляется.

Ну или если хочется отправить в боди, то сделать
$.ajax({
    contentType: 'application/json',
    dataType: 'json',
    data: JSON.stringify({ some valid JSON})
...
Похожие вопросы