Всего 123 789 комментариев

Александр Мельник
12 июня 2023, 06:36
0
сложно четко разграничить на «черное и белое», мол вот это костыль, а это нет, поэтому я так и написал — ощущение костыля. Но я не могу пока предложить решения лучше.
Баха Волков
11 июня 2023, 22:57
+1
Как почему? Потому что...: «вызывает ощущение дикого костыля», но «вынуждем признать, что когда я писал свой аналог ajaxForm я тоже не придумал ничего лучшего и использовал этот же костыль».

Любому кто придумает не «костыльное» решение пожму руку и поблагодарю. Мне даже PR не нужен, просто напишите на словах решение лучше. Варианты: хранить в бд (сами сессии зачастую хранятся там), в файлах (зачем?) или гонять данные на фронт (небезопасно, в параметрах сниппета могут быть чувствительные данные) не предлагать.
Артур Шевченко
11 июня 2023, 21:17
0
А почему хранить данные форм в сессии это костыль?
Роман
11 июня 2023, 15:56
0
Проблема была не только в типе поля VARCHAR но и в эмодзи в тексте JSON массива, изменил тип поля на LONGTEXT и кодировку базы поменял на utf8mb4
Роман
11 июня 2023, 14:38
0
Да, заметил что обрывает на слове «погода», а за словом погода идет иконка "… а лучше могла быть погода ?" Что можно сделать в таком случае? Другие иконки проходят.
Александр Мельник
11 июня 2023, 14:38
0
может. а смайлы чтобы хранить в базе данных, насколько я знаю, нужно еще и определенную кодировку устанавливать — utf8-mb4
а у вас на скрине другая. Это тоже может быть причиной.
Роман
11 июня 2023, 14:25
0
Нет, там отзывы, да могут быть спец символы всякие, люди вставляют смайлики, из за этого может быть обрыв?
Dan
Dan
11 июня 2023, 14:23
0
а вы проверяли свой json на наличие ошибок?
Роман
11 июня 2023, 11:50
0
Руками сейчас вставляю.
Роман
11 июня 2023, 11:49
0
да, уже речь про поле в бд
Александр Мельник
11 июня 2023, 10:48
0
Добавлю немного картинок, текст это всегда скучно)
brioni
11 июня 2023, 09:21
0
Андрей, привет. Как получить токен на сайте bugpt.ru/?
Dan
Dan
11 июня 2023, 08:49
0
А json у вас как формируется? Вы сами его составляете? Может в нем есть ошибки? Какая длина json?
Александр Мельник
11 июня 2023, 08:03
0
только сейчас «догнал» что под строкой «536870911» вы имели ввиду длину данных в sql, а не строку, которую вы пытаетесь сохранить в это поле.
Александр Мельник
11 июня 2023, 07:30
0
тоесть поведение изменилось? До этого вы вставляли длинную строку и говорили что она ОБРЕЗАЕТСЯ, а теперь вставляете короткую строку и пишите, что она НЕ СОХРАНЯЕТСЯ совсем?
Выглядит странно, по идее Денис все верно сказал, нужно изменить тип поля value. На самом деле максимальную длину хранимых данных данных можно и не указывать, будет выделено 65 килобайт под каждое значение.
По идее, вам и стандартного mediumtext должно было хватать, под него выделяет 16 миллионов символов, ну неужели ваш json был больше.
Проверяйте ошибки в логах, как в браузере в момент сохранение, так может и логи на сервере.
У меня родилась теория, что ваш json мог обрезаться не по причине длины строки, а по причине того что в его тексте встречался какой то запрещенный в sql символ, хотя это не поясняет ту ситуацию что вы описали в последнем коменте — не сохраняется даже простая строка «536870911»
Александр Мельник
11 июня 2023, 07:03
+1
плюс лично мне очень не нравится сама идея, когда ajaxForm (и fetchIt я думаю делает так же), хранит данные для форм в сессии.
Вся эта идея с генерацией уникального ключа для каждой формы, помещения по этому ключу данных в сессию, при отправке формы считываная этого с сессии… вызывает ощущение дикого костыля. Да, я вынуждем признать, что когда я писал свой аналог ajaxForm я тоже не придумал ничего лучшего и использовал этот же костыль.
Может быть, отчасти, именно поэтому я все реже и реже использую ajaxForm и его аналоги на сайтах и предпочитаю оставить форму в верстке, написаь свой js обработчик и свой php контроллер для отправки.
Александр Мельник
11 июня 2023, 06:52
+1
Вот видите как иногда полезно узнать чужое мнение. А то каждый «в своем мирке» и привыкает использовать инструменты только для каких то строго определенных целей. Я вот например использую ajaxForm (да я понимаю что речь идет о fetchIt, но задачи у них общие) только для примитивных форм в модалках, типа — заказать обратный звонок и так далее. И там необходимо, чтобы данные очищались. Если уже делать что то более серьезное, например личный кабинет о котором говорил Артур, то я предпочту писать все сам, благо сейчас на чистом js очень просто и подписаться на событие submit формы, и собрать данные через formData и отправить их на сервер через fetch и дождаться ответ через promise. Это приносит огромное ощущение удовлетворенности, что каждая строчка кода в личном кабинете написана тобой, что ты именно Разработчик, а не собиратель конструктора из чужих пакетов. Спасибо за ответы, я правда не мог подумать о таких способах применения этого пакета.
Константин Ильин
11 июня 2023, 01:23
+1
Интересный Вы Александр. Отвечу кратко:
Редактирование профиля пользователя, например поле fullname, пишешь «Александр Мельник 666», а после нажатия кнопки сохранить отобразится «Александр Мельник», defaul value.
ну и Артур про это же написал.
Роман
11 июня 2023, 00:04
0
что бы я не указал, не сохраняется значение в этом поле, пишу 536870911 сохраняю, редактирую снова и вижу что поле пустое