Вопрос или проблема
Я хочу сохранить данные формы с помощью 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, вы можете посетить официальную документацию.
Если у вас есть дополнительные вопросы, пожалуйста, дайте знать!