Как получить URL моего insert.php в jQuery?

Вопрос или проблема

Я хочу сохранить данные формы с помощью jQuery, но не могу получить к ним доступ в своем скрипте. Может кто-нибудь помочь мне. Доступ к URL в скрипте: url: ‘admin.php?page=insert.php’,

Мой скрипт

$(function () {
        $('form').on('submit', function (e) {
          e.preventDefault();
          var schema_key = $("#schema_key").val(); 
          $.ajax({
            type: 'post',
            url: 'admin.php?page=insert.php',
            data: schema_key,
            success: function () {
              alert('форма была отправлена');
            }
          });

        });

      });

Я думаю, что вам нужно указать полный URL, потому что если ваш скрипт не размещен на главной странице, он не сможет получить доступ к этому URL: ‘admin.php?page=insert.php’, попробуйте добавить полный URL, url: ‘domain.com…/admin.php?page=insert.php’

$(function () {
    var site_url = window.location.hostname; // www.example.com
    $('form').on('submit', function (e) {
      e.preventDefault();
      var data = {
            action : 'insert',
            schema_key : $("#schema_key").val(),
      }; // добавление действия
      $.ajax({
        type: 'post',
        url: site_url+'/wp-admin/admin-ajax.php',
        data: data,
        success: function () {
          alert('форма была отправлена');
        }
      }); // конец ajax

   }); // конец отправки формы

}); // конец $function

Если вы посмотрите на данные, которые я отправляю с помощью ajax-вызова, там есть один параметр “action”, и это действие отвечает за определение функции для вставки данных в базу данных.

Теперь вам нужно определить хуки и функцию обратного вызова в файле functions.php вашей активной темы или в вашем файле плагина.

Синтаксис будет: add_action( 'wp_ajax_$action', 'callback_function' );

Таким образом, в вашем случае это будет:

function wp_insert_schema_key() {
    $schema_key = $_POST["schema_key"];
    // Ваш код для вставки/обновления в БД.
    echo "Успех"; // ответ, который будет отправлен из AJAX-вызова
    die;

}
add_action( 'wp_ajax_insert', 'wp_insert_schema_key' );

Для получения дополнительной информации вы можете ознакомиться с – https://codex.wordpress.org/AJAX_in_Plugins

Ответ или решение

Чтобы получить URL для вашего скрипта insert.php в jQuery, необходимо учесть несколько моментов. Давайте я объясню поэтапно.

1. Сбор данных формы и отправка AJAX-запроса

Для начала нужно корректно организовать отправку данных формы. Вы можете использовать функцию jQuery для обработки события отправки формы. Вот код, который вам нужен:

$(function () {
    $('form').on('submit', function (e) {
        e.preventDefault(); // Предотвращаем стандартное поведение формы

        var schema_key = $("#schema_key").val(); // Получаем значение поля

        // Создаем объект данных, который будет отправлен на сервер
        var data = {
            action: 'insert', // Здесь мы указываем действие для обработки на сервере
            schema_key: schema_key
        };

        $.ajax({
            type: 'post',
            url: 'admin-ajax.php', // Здесь нужно указать правильный URL
            data: data,
            success: function (response) {
                alert('Форма успешно отправлена: ' + response);
            },
            error: function () {
                alert('Произошла ошибка при отправке формы.');
            }
        });
    });
});

2. Правильный URL

Стоит отметить, что admin.php?page=insert.php скорее всего не сработает, если ваш скрипт не находится на той же странице. Вместо этого рекомендуется использовать admin-ajax.php, который является стандартным способом обработки AJAX-запросов в WordPress.

Можно также динамически получать URL, добавив следующий код в ваш JavaScript:

var site_url = window.location.origin; // Получаем базовый URL сайта
var ajax_url = site_url + '/wp-admin/admin-ajax.php'; // Формируем полный URL к admin-ajax.php

3. Обработка на стороне PHP

Теперь, когда AJAX-запрос отправлен, нужно написать обработчик этого запроса на стороне PHP. Вы можете добавить следующий код в файл functions.php вашей темы или в файл вашего плагина:

function wp_insert_schema_key() {
    // Получаем переданные данные
    $schema_key = $_POST["schema_key"];

    // Здесь добавьте логику для вставки данных в базу данных

    echo "Успех"; // Ответ, который будет отправлен обратно в AJAX
    wp_die(); // Завершение работы AJAX
}
add_action('wp_ajax_insert', 'wp_insert_schema_key'); // Для пользователей, авторизованных в системе
add_action('wp_ajax_nopriv_insert', 'wp_insert_schema_key'); // Для неавторизованных пользователей (если необходимо)

4. Заключение

Теперь, когда вы добавили код обработки запроса на PHP и JavaScript, ваша форма будет отправлять данные на сервер, и вы сможете обрабатывать и сохранять их в базе данных. Не забудьте дополнительно проверить безопасность для предотвращения SQL-инъекций и других уязвимостей.

Для получения более подробной информации о работе с AJAX в WordPress, вы можете посетить официальную документацию.

Если у вас есть дополнительные вопросы, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...