|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
nepster |
|
|||
Опытный Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
Собственно вопрос такой, для работы с отправкой пост данных работаю с AJAX (jQUERY).
Все работает отлично. Только заметил одну не большую деталь. Если быстро нажимать (кучу раз тыкать по клавишам) на кнопку сохранить пока идет загрузка данных, данные будут дублироваться. Выглядит это так. Я нажима на сохранить, начинают грузится данные и не дожидаясь ответа от сервера я нажимаю еще кучу раз и в базу появляются дубликаты. Вместо 1 новости, я получаю 2 - 3 одинаковые. Подскажите пожалуйста как лучше всего бороться с такими ситуациям? Можно ли сделать так. что мы отправили запрос на сервер и пока сервер не ответит нельзя послать или игнорировать другой запрос от этой функции ? |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Вариантов решения много.
На клиенте можно делать кнопке отправке "disabled" до получения данных или по таймауту. Это спасет от "дрожащих рук" нормального клиента. Рисовать окошко "форма отправляется, просим не суетится...". Красивенько, разумно, требует javascript. На сервере, при генерации формы можно вставлять уникальное значение в скрытое поле. Каждый новый вывод формы клиенту вызовет генерацию нового значения. Это значение будет ключём для вставляемых записей. При получении данных проверяем, что эта форма ещё не пОстилась. Иначе - заменяем запись вместо вставки. Таким образом, одна форма, несколько раз подряд отправленная, вызовет только одно изменение. Если у клиента медленный (глючный, пропадающий) интернет и он успел перечитать свое сообщение исправить и послать его еще много раз, то последнее исправление не пропадет ;) Некоторый дискомфорт в этом решении вызывает добавление еще одного ключа в базу. Можно хранить эти ключики не в базе а в memcache или в отдельной таблице, которую подчищать со временем... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
Sanchezzz |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Ужас...
encodeURIComponent не обязательно использовать для $.ajax Switch error можно упросить если обрабатывать это циклом
И да решение вашей проблемы
По рекламирую полезную штуку для сбора данных с указанной области инпутов. -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
||||
|
|||||
nepster |
|
||||
Опытный Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
большое спасибо, как раз недавно задумался об этом деле.
Но буду еще более хитрожопие, воспользуюсь:
от свича в обработке ошибок не хотел бы отходить, очень удоьно и четебельно выглядит оформление всех ошибок |
||||
|
|||||
Sanchezzz |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Если мне память не изменяет то Ckeditor в массив не входит его отдельно надо запихать надо.
Пробывал я serializeArray 1 Мне не подошел так как не умет работать с указанного элемента только с формы, а это печально и прискорбно. 2 Возвращает массив вида { name: 'имя поля' , value:'значение'} тоже не подходит для меня. -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
nepster |
|
|||
Опытный Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
хм, я еще не разбирал serializeArray() + Ckeditor, но стало интересно.
При том же коде, вот результат Присоединённый файл ( Кол-во скачиваний: 11 ) Новый_точечный_рисунок.jpg 70,12 Kb |
|||
|
||||
Sanchezzz |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Скажу вам повезло, у меня получалось вот такой случай при отправке textarea пустое поле, возможно Ckeditor при submit формы вставляет в textarea данные либо у меня была старая версия)
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
nepster |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
ну да, интересно если просто обычным постом кидать, в любом случае он бросает содержимое textarea на сервер.
Тоесть если бы в вашей старой версии была просто отправка данных методом пост, то данные бы не долетели ? Думаю просто где-то ошиблись. Вроде очень удобная вещь
только вот достать данные не удобно. Даже вроде нет возможности как я понял, пришлось писать функцию:
|
||||||
|
|||||||
Sanchezzz |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Я лучше останусь при своем костыле по причине 2) которую я писал пару постов выше. -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
nepster |
|
||||
Опытный Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
тут все рпавильно, эти визуалки работают по средствам iframe, тоесть он вставляется в textarea и создает такой эффект редактирования. Но при поссылке данных постом получаем именно данные какие нужно. всмсле, что нельзя данные добавлять?
и в целях навясчивости удобнее, тоесть если у пользователя отключен JS , что бы летели просто данные. Я так вставил к примеру csrfToken |
||||
|
|||||
Sanchezzz |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Таких людей очень маленькое количество. Если нужна совместимость то я реализую такой же метод как и у вас тут вы без условно вы правы.
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
seregadgl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 2.10.2012 Репутация: нет Всего: нет |
Скажу вам повезло, у меня получалось вот такой случай при отправке qsn пустое поле, возможно Ckeditor при submit формы вставляет в textarea данные либо у меня была старая версия)
|
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: 6 Всего: 12 |
Только хотел написать и перешел по ссылке. Тфутымля, опять эти дизайнеры интерьеров. Ребята это же АНТИреклама. Я вот как увижу ваш сайт у кого нибудь, В ПЕРВУЮ ОЧЕРЕДЬ отговаривать буду. Чтобы вообще не связывались. Хоть и делаете потолки вы возможно не плохо... |
|||
|
||||
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |