AJAX使用時のHTTPコード400エラー
私のプラグインには、プラグインページを作成するために呼び出される関数が含まれています。この関数は標準的なJSモーダルウィンドウを介してユーザーに3つの入力パラメータを要求しますが、パラメータをサーバーに転送する際に問題が発生します。リクエストでAJAXパラメータを送信し、サーバー側でAJAXリクエストホルダーを作成しています。エラーが何なのかわからなくなってしまいました。ご存知の方がいらっしゃいましたら教えてください。
// Выводим страницу с урезанной кнопкой установки
関数 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'] : ";
を試す。
//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 installation request processed successfully'、
'python' => $result
));
//Запоминаем результат функции в сессии
$_SESSION['python_install_result'] = $result;
} catch (例外 $e) {.
//Записываем соообщение об ошибке в журнал
error_log("Error during Docker installation: " . $e->getMessage());
//AJAX の使用方法について説明します。
wp_send_json_error('Dockerのインストールに失敗しました。 詳細はログを確認してください。');
//Запоминаем сообщение об ошибке в сессии
$_SESSION['python_install_result'] = 'Dockerのインストールに失敗しました: ' . $e->getMessage();
}
} else {
//Возвращаем ошибку
wp_send_json_error('Unauthorised');
//Запоминаем результат функциии
$_SESSION['python_install_result'] = "Python: Ошибка при запуске установки Python: Вы не авторизованы!";
}
} else {
//Возвращаем ошибку
wp_send_json_error('AJAXリクエストではありません');
//Запоминаем результат функциии
$_SESSION['python_install_result'] = "Python: AJAX をインストールする。";.
}
退場する;
});
//Диалог с пользователем
?><スクリプト
//Холдеры ответов пользователя
dockerPassword = null;
dockerAccessMethod = null;
(//Функция/отправки/отправки/параметров)。
関数sendFormData(accessMethod, dockerPassword) { {.
//XMLHttpRequest
const xhr = new XMLHttpRequest();
//Устанавливаем URL сервера
xhr.open("POST", "", true);
//Устанавливаем заголовок для типа контента
xhr.setRequestHeader("Content-Type", "application/json");
//Отправляем запрос
xhr.send(JSON.stringify({)
'action': 'python_install'、
'accessMethod': アクセスメソッド、
'dockerPassword': dockerPassword
}));
//Обработчик события для успешного ответа
xhr.onload = function() { {」です。
if (xhr.status >= 200 && xhr.status < 400) { とする。
//Обработка ответа сервера
const response = JSON.parse(xhr.response);
console.log([${xhr.status}] Server response: ${response}(英語):
} else {
//エラーを返す
console.error( [${xhr.status}] エラー: ${xhr.statusText});
}
};
//結果を返す
xhr.onerror = function() { { { xhr.onerror = function() { { { xhr.onerror = function()
//結果を返す
console.error("[エラー] データの送信に失敗しました");;
};
}
// 複数のコンポーネントを実装する
document.addEventListener('DOMContentLoaded', function() { // Dockerコンポーネントを設定する new Promise((resolve, rejection) => {setTimeout(() => { // DockerコンポーネントのコンポーネントタイプをJavaScriptに設定します new Promise((resolve, rejection) => { setTimeout(() => { // DockerコンポーネントのコンポーネントタイプをJavaScriptに設定します newPromise((resolve, rejection) => { setTimeout(() => { // DockerコンポーネントのコンポーネントタイプをJavaScriptに設定 new Promise((resolve, rejection) => { setTimeout(() => { // DockerコンポーネントのコンポーネントタイプをJavaScriptに設定する。DockerコンポーネントのコンポーネントタイプをJavaScriptに設定する new Promise((resolve
rejection) => { setTimeout(() => { Docker const useDocker = confirmed('Do you want to use Docker?'); resolve(useDocker); }, 0); }) .then((useDocker) => { if (useDocker) { // Dockerから情報を得る return new Promise((resolve, rejection) => { setTimeout(() => { // Dockerからパスワードを解決するdockerPassword = prompt('Resolve the password from Docker or it will fail', "); // Dockerからパスワードを解決 if (dockerPassword ! == null) { resolve(dockerPassword); } else { rejection(null); } }, 0); }); } else { /Dockerからのフィードバック return Promise.reject('Docker isn't in use '); } // Dockerからパスワードを解決する。't in use '); } }) .then((password) => { // Dockerサービスを使用するメソッド return new Promise((resolve, rejection) => { setTimeout(() => { // Dockerサービスメソッドを使用するメソッドサービスメソッドを使用するメソッド dockerAccessMethod = prompt('Dockerサービスにログインします。(Name: ssh localhost - p222)', "); // 有効なメソッドを定義する if (dockerAccessMethod !== null) { resolve(dockerAccessMethod); } else { rejection(null); } } }, 0); }) .then((accessMethod) => { //実行 sendFormData(accessMethod、dockerPassword); }) .catch((error) => { //execute sendFormData(null, null); }); }); <?php copy code