Ответ PHP на обратный вызов AJAX, выводящий на экранPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ответ PHP на обратный вызов AJAX, выводящий на экран

Сообщение Anonymous »

Я столкнулся с действительно странной проблемой, когда мой метод php отправляет обратно ответ json после успешного сохранения записи в базе данных, но ответ печатается на экране, а не отправляется обратному вызову Ajax. Это приводит к сбою обратного вызова Ajax и последующего кода. Тот же код с теми же подписями методов и ответами работает для других классов, но не работает для этого экземпляра.
Это jQuery, который запрашивает действие публикации:

Код: Выделить всё

$(document).ready(function() {
validateForm();

$('#addOrganisationForm').on('submit', function(e) {
e.preventDefault();
if ($(this).valid()) {
const formData = {
name: $('#name').val(),
websiteUrl: $('#websiteUrl').val(),
description: $('#description').val(),
industry: $('#industry').val(),
};
sendCreateOrganisationRequest(formData);
} else {
console.log('Form validation failed.');
}
});
});

function sendCreateOrganisationRequest(formData) {
console.log('Sending request...');
$.ajax({
url: '/organisations/create',
type: 'POST',
contentType: false,
processData: false,
data: formData,
success: function(response) {
if (response.success) {
console.log('Organisation created successfully!');
if (isAuthenticated) {
window.location.href = '/organisations/getAll';
} else {
alert('Organisation created successfully!');
$('#addOrganisationForm')[0].reset();
}
} else {
processErrors(response.error);
}
},
error: function(xhr, status, error) {
console.error('Failed request:', status, error);
let response = JSON.parse(xhr.responseText);
processErrors(response.error);
}
});
}
Это метод createOrganisation:

Код: Выделить всё

public function createOrganisation(string $name, string $description, string $websiteUrl, string $industry): void
{
try {
$duplicates = $this->organisationMapper->checkDuplicate($name, $websiteUrl);

if (!empty($duplicates)) {
renderJson(['error' => $duplicates], 400);
return;
}
$organisation = new Organisation();
$organisation->setName($name);
$organisation->setDescription($description);
$organisation->setWebsiteUrl($websiteUrl);
$organisation->setIndustry($industry);
$organisationSaved = $this->organisationMapper->save($organisation);
renderJson(['success' => $organisationSaved], $organisationSaved ? 200 : 404) ;
} catch (Exception $e) {
renderJson($e->getMessage(), 500);
}
}
Это метод рендеринга json, используемый для отправки ответа.

Код: Выделить всё

// Helper method to send json responses
function renderJson(array | string $data, int $statusCode): void
{
header('Content-Type: application/json');
http_response_code($statusCode);
echo json_encode($data);
}
Я пробовал отладку с помощью операторов print_r и error_log и не смог найти причину, по которой ответ печатается вместо отправки ответа непосредственно в обратный вызов Ajax.
Я также пробовал менять, используя if/else и присваивание переменных с явной проверкой типа в методе контроллера вместо троичного, но ничего не изменилось.>

Подробнее здесь: https://stackoverflow.com/questions/789 ... -to-screen
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ответ PHP на обратный вызов AJAX, выводящий на экран
    Anonymous » » в форуме Jquery
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Как добавить экран, когда экран выключен, как экран будильника по умолчанию, когда будильник трепещет, экран будильника
    Anonymous » » в форуме Android
    0 Ответы
    298 Просмотры
    Последнее сообщение Anonymous
  • Простой цикл while, выводящий неожиданные значения (новичок)
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Используйте Popover API с `
    ` как выводящий элемент
    Anonymous » » в форуме Html
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Обратный вызов Flask ajax не может обновить график
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

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