HTTP-Code 400-Fehler bei Verwendung von AJAX
Mein Plugin enthält eine Funktion, die aufgerufen wird, um die Plugin-Seite zu erstellen. Sie fordert 3 Eingabeparameter vom Benutzer über ein modales Standard-JS-Fenster an, hat aber Probleme bei der Übertragung der Parameter an den Server. Ich sende die AJAX-Parameter über eine Anfrage und erstelle den AJAX-Anfragehalter auf der Serverseite. Ich weiß nicht mehr, was der Fehler sein könnte. Bitte helfen Sie, wenn Sie wissen, was Sie tun.
//Выводим страницу с урезанной кнопкой установки
function ai_parser_non_sudo_install_python_page() {
//Обработка POST запроса через AJAX
add_action('wp_ajax_python_install', function () {
//Если AJAX запрос получен верно
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_ WITH']) === 'xmlhttprequest') {
//Если пользователь вторизован
if (is_user_logged_in()) {
//Получаем параметры формы
$docker_access_method = isset($_POST['docker_access_method']) ? $_POST['docker_access_method'] : ";
$docker_password = isset($_POST['docker_password']) ? $_POST['docker_password'] : ";
versuchen {
//Выполняем установку Docker с помощью функции ai_parser_non_sudo_install_python()
$result = ai_parser_non_sudo_install_python($docker_password, $docker_access_method);
// Отправляем ответ AJAX с сообщением об успешной обработке запроса и результатом установки
wp_send_json_success(array(
message' => 'Docker-Installationsanfrage erfolgreich verarbeitet',
'python' => $result
));
//Запоминаем результат функции в сессии
$_SESSION['python_install_result'] = $result;
} catch (Exception $e) {
//Записываем сообщение об ошибке в журнал
error_log("Fehler bei der Docker-Installation: " . $e->getMessage());
//Отправляем ответ AJAX с сообщением об ошибке
wp_send_json_error('Die Installation von Docker ist fehlgeschlagen, bitte prüfen Sie die Protokolle für weitere Details.');
//Запоминаем сообщение об ошибке в сессии
$_SESSION['python_install_result'] = 'Failed to install Docker: ' . $e->getMessage();
}
} sonst {
//Возвращаем ошибку
wp_send_json_error('Nicht autorisiert');
//Запоминаем результат функции
$_SESSION['python_install_result'] = "Ошибка при запуске установки Python: Вы не авторизованы! ";
}
} sonst {
//Возвращаем ошибку
wp_send_json_error('Keine AJAX-Anfrage');
//Запоминаем результат функции
$_SESSION['python_install_result'] = "Ошибка при запуске установки Python: AJAX запрос не распознан ";.
}
Ausgang;
});
//Диалог с пользователем
? >
//Холдеры ответов пользователя
let dockerPassword = null;
let dockerAccessMethod = null;
//Функция отправки параметров
function sendFormData(accessMethod, dockerPassword) {
//Создаем объект XMLHttpRequest
const xhr = new XMLHttpRequest();
//Устанавливаем URL сервера
xhr.open("POST", "", true);
//Устанавливаем заголовок для типа контента
xhr.setRequestHeader("Content-Type", "application/json");
//Отправляем запрос
xhr.send(JSON.stringify({
Aktion": "python_install",
accessMethod': accessMethod,
dockerPasswort": dockerPasswort
}));
//Обработчик события для успешного ответа
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 400) {
//Обработка ответа сервера
const response = JSON.parse(xhr.response);
console.log([${xhr.status}] Serverantwort: ${response} (Englisch):
} sonst {
//Fehler zurückgeben
console.error( [${xhr.status}] Fehler: ${xhr.statusText});
}
};
//Rückgabe der Ergebnisse
xhr.onerror = function() {
//Rückgabe der Ergebnisse
console.error("[Fehler] Daten können nicht gesendet werden");;
};
}
// Implementierung mehrerer Komponenten
document.addEventListener('DOMContentLoaded', function() { // Setzen der Docker-Komponente new Promise((resolve, rejection) => { setTimeout(() => { // Den Komponententyp der Docker-Komponente auf JavaScript setzen new Promise((resolve, rejection) => { setTimeout(() => { // Den Komponententyp der Docker-Komponente auf JavaScript setzen new Promise((resolve, rejection) => { setTimeout(() => { // Setzen Sie den Komponententyp der Docker-Komponente auf JavaScript new Promise((resolve, rejection) => { setTimeout(() => { // Setzen Sie den Komponententyp der Komponententyps der Docker-Komponente auf JavaScript new Promise((resolve
, Ablehnung) => { setTimeout(() => { Docker const useDocker = confirmed('Möchten Sie Docker verwenden?'); resolve(useDocker); }, 0); }) . then((useDocker) => { if (useDocker) { // Abrufen der Informationen von Docker return new Promise((resolve, rejection) => { setTimeout(() => { // Auflösen des Passworts von Docker dockerPassword = prompt('Resolve the password from Docker or it will fail', "); // Resolve the password from Docker if (dockerPassword ! == null) { resolve(dockerPassword); } else { rejection(null); } }, 0); }); } else { //Rückmeldung von Docker return Promise.reject('Docker isn t in use '); } }) .then((password) => { // Methoden, die den Docker-Dienst verwenden return new Promise((resolve, rejection) => { setTimeout(() => { // Methoden, die die Docker Dienstmethode dockerAccessMethod = prompt('Melden Sie sich beim Docker-Dienst an. (Name: ssh localhost - p222)', "); // Definieren Sie eine gültige Methode if (dockerAccessMethod ! == null) { resolve(dockerAccessMethod); } else { rejection(null); } }, 0); }); }) .then((accessMethod) => { //Execute sendFormData(accessMethod, dockerPassword); }) .catch((error) => { //Ausführen von sendFormData(null, null); }); }); <?php copy code
Kommentare
Kommentar hinzufügen-
Kommentarliste ist leer