За последние 24 часа нас посетили 16843 программиста и 1178 роботов. Сейчас ищут 1475 программистов ...

Как выводить только первую ошибку в ответ ajax при валидации формы?

Тема в разделе "JavaScript и AJAX", создана пользователем гендаль серый, 19 фев 2024.

  1. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    у меня обработчик формы собирает все ошибки в массив и этот массив при наличии ошибо выдает сразу все ошибки пользователю..не пойму как на js jquery сделать чтобы выдавалась только первая ошибка из массива.
    в ajax у меня такая строчка вывода ошибок -
    Код (Javascript):
    1. $('.info-content').text(response.errors);
    в php сбор массива сделан таким образом -
    PHP:
    1. if(!empty($errors)){
    2.         $response = [
    3.         'success' => false,
    4.         'errors' => implode(' ', $errors)
    5.         ];
    6.         header('Content-Type: application/json');
    7.         echo json_encode($response);
    8.         exit;
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    418
    Симпатии:
    79
    Адрес:
    Бавария, Германия
     
  3. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    418
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Вынужден повторить, выбросило по time out, не могу исправить
    Добрый день!
    Если в errors массив, то так
    Код (Javascript):
    1. $('.info-content').text(response.errors[0]);
    Причём здесь PHP не понятно. Всё должно быть JS.
    Если errors cодержит строку с пробелами, то её в JS нужно так преобразовать в массив
    Код (Javascript):
    1. errors.split(' ')
    Удачи!
     
  4. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    если я вот так выбираю
    Код (Javascript):
    1. $('.info-content').text(response.errors[0])
    то выводится только первая буква сообщения - выбирает по буквам почему то.

    я думал может в php обрабтчике сразу оставлять только первое попавшееся сообщение, но чет тоже не получается
     
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    418
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Покажите, пожалуйста, что выводит console.log
    Код (Javascript):
    1. console.log(response);
    Есть ли в коде errors.split('') - без пробела?
     
  6. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    я не совсем понял куда ставить errors.split('')
    в консоли вот так:
    зачеркнул немного лишнее..)

    если сделать так, то после каждой буквы запятая идет...
    Код (Javascript):
    1. $('.info-content').text(response.errors.split(''));
     

    Вложения:

    #6 гендаль серый, 19 фев 2024
    Последнее редактирование: 19 фев 2024
  7. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    спасибо за помощь, я все таки в самом обработчике сделал через array_shift(). вроде все заработало как надо
     
  8. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    418
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Это только вроде бы как надо, а на самом деле это надо делать в JS, тест
    Код (Javascript):
    1. <script>
    2. response = {
    3. 'success':false,
    4. 'errors':'Выберите категорию.Сформулируйте более содержатнльное название темы'
    5. }
    6. alert(response.errors.split(".")[0]); // --> Выберите категорию
    7. </script>
    В Ваше коде д.б.
    Код (Javascript):
    1. $('.info-content').text(response.errors.split(".")[0]);
    Удачи!
     
  9. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    ну да кстати, ваш вариант лучше..у меня получается в валидации лишняя функция отрабатывает.
    переделал в общем по вашей инструкции..)
    спасибо еще раз