Всего 123 792 комментария

Александр Мельник
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 контроллер для отправки.