Как использовать Ajax в WordPress Vidget только в бэкэнд администратора?Javascript

Форум по Javascript
Ответить
Anonymous
 Как использовать Ajax в WordPress Vidget только в бэкэнд администратора?

Сообщение Anonymous »

Я пытаюсь создать простой виджет WordPress для генерации текста ИИ. Виджет должен позволить пользователю ввести приглашение, установить предел слова и нажать кнопку «Создать текст». Я хочу использовать API OpenAI для генерации текста на основе приглашения и предела слова. Тем не менее, я сталкиваюсь с проблемой с тем, как ведет себя виджет в зависимости от того, где он загружен. Генерация текста ИИ работает нормально, когда все параметры (форма) загружаются на первой странице WordPress (рабочий пример в коде-1 ниже). Но я хочу, чтобы виджет был доступен только в бэкэнде (как часть параметров виджетов). < /P>
Итак, моя цель - сделать генератор текста ИИ доступным только в бэкэнд для редактирования Виджеты и создайте API текст и вставьте его в текстовую область виджета. Основная проблема заключается в том, что AJAX, похоже, не работает должным образом в вариантах виджетов, и я изо всех сил пытаюсь найти решение. > < /p>

Создайте виджет в бэкэнд WordPress. Приглашение и
limit). < /li>
Вставьте сгенерированный текст в текстовую область виджета. Вопросы: < /strong> < /p>
Как я могу заставить Ajax работать должным образом внутри параметров виджета WordPress в бэкэнд? Поколение с виджетом WordPress в бэкэнд? Я проверил генерацию текста ИИ на бэкэнд -странице (не виджеты), и она там отлично работает. Проблема связана только с виджетами, и я не могу понять, почему это не работает. В консоли нет ошибок, ничего - это просто не работает в виджете. < /P>
Любая помощь будет очень оценена! strong> code-1 (работает OK, если загружен как передний виджет):



Prompt:


Word Limit:


Generate Text

Output:



document.addEventListener("DOMContentLoaded", function() {
document.getElementById("openai_generate").addEventListener("click", function() {
let prompt = document.getElementById("openai_prompt").value.trim();
let wordLimit = parseInt(document.getElementById("openai_word_limit").value);

if (prompt.length === 0) {
alert("Please enter a prompt.");
return;
}

fetch('', {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: `action=openai_generate_text&prompt=${encodeURIComponent(prompt)}&word_limit=${wordLimit}`
})
.then(response => response.json())
.then(data => {
console.log(data); // Debugging: log the response data

// Check if the response is as expected
if (data.success) {
const output = document.getElementById("openai_output");
if (output) {
output.value = data.data.text || "No text generated."; // Access text inside `data.data.text`
} else {
console.error('Output textarea not found.');
}
} else {
const output = document.getElementById("openai_output");
if (output) {
output.value = "Error: " + (data.message || "Unknown error");
} else {
console.error('Output textarea not found.');
}
}
})
.catch(error => {
console.error("Error:", error);
const output = document.getElementById("openai_output");
if (output) {
output.value = "Error: Unable to reach API or process request.";
}
});
});
});




code -2 (загружено в параметрах бэкэнда виджетов - не работает):




Подробнее здесь: https://stackoverflow.com/questions/794 ... ckend-only
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»