Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20

Накопление HTTP заголовков (ajax)

08.02.2014, 17:02. Показов 2105. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Возникла проблема с накоплением заголовков или запросов (не уверен как правильно). Суть в следующем, есть простая форма с именем пользователя и имейлом. При помощи jQuery вытаскиваю данные из формы forma.serialize(); Потом отсылаю данные в обработчик php и очищаю форму. Беда в том, что если не перезагружая страницу еще раз заполнить форму и отправить данные, то они продублируются, при этом при каждом отправлении данных будет происходит инкрментирование данных. То-есть. Сначала отправиться user1, при след заполнении и отправке user2, user2, потом user3,user3,user2 . Метот отправки POST, асинхронный. Что делаю не так?

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 form.submit(function(){
        var f_data;
        f_data = form.serialize();
 
        var link = form.attr('action').trim();
        var c_name = form.find("input[name=client_name]").val().trim();
        var c_phone = form.find("input[name=client_phone]").val().trim();
 
        if(c_name == '' || c_phone == '')
        {
            $(document).ready(function(){
                $("#alrt_msg").stop(true).slideDown(250).delay(2500).slideUp(250);
            });
            return false;
        }
 
        $.ajax({
            method:"POST",
            cache: false,
            url:link,
            async: true,
            data: f_data,
            success: freeOrder_Success
        });
        return false;
    });
Добавлено через 22 часа 4 минуты
Совсем идей нет или может объяснил непонятно?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2014, 17:02
Ответы с готовыми решениями:

Подмена заголовков в ajax
Предположим, у меня есть сайт site1 и мне нужно написать аякс-запрос к внешнему серверу site3, установив при этом заголовки origin и ...

Отловить возвращение из php скрипта http заголовков
На странице находится форма, по отправке которой стандартными методами (не аякс) php скрипт генерирует файл и отдает его на скачивание. При...

Как получить данные из HTTP заголовков, средствами JS/jQuery?
Всем привет! Кто знает как получить данные из HTTP заголовков, средствами JS/jQuery? Буду благодарен любым мыслям по этому поводу. В моем...

20
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 17:11
Строки 5,6,7 - это у вас типа очищение формы? Скажите, а вы действительно видите, что данные очищаются?
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 17:16  [ТС]
5,6,7 - это получение данных из формы, а не очищение. И да, форма точно чистится.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 17:26
Тогда хорошо бы еще глянуть код хэндлера и функцию freeOrder_Success
А по поводу jQuery:
1. Синтаксис trim - $.trim( value ); или jQuery.trim( value ); Посему, у вас не удаляются лишние пробелы.
2. async: true - указывать не обязательно, т.к. это значение по умолчанию.
3. Нет смысла оборачивать в конструкцию DOM-Ready внутри этой же конструкции
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 17:33  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Тогда хорошо бы еще глянуть код хэндлера и функцию freeOrder_Success
А по поводу jQuery:
1. Синтаксис trim - $.trim( value ); или jQuery.trim( value ); Посему, у вас не удаляются лишние пробелы.
2. async: true - указывать не обязательно, т.к. это значение по умолчанию.
3. Нет смысла оборачивать в конструкцию DOM-Ready внутри этой же конструкции
Вот код freeOrder_Success
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
function freeOrder_Success(data)
{
    if(data != 'false')
    {
        form[0].reset();
        $("#FreeOrderModal").modal('show');
    }
    else
    {
        console.log("Не удалось выполнить запись в БД");
    }
}
Что понимается под хендлером? И кстати DOM реди не внутри этой же конструкции
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 17:44
Во-первых, прошу прощение по поводу trim - раньше не работал, а сейчас я проверил и таки очищает.
Во-вторых, if(data != false) - не надо кавычки. А хэндлер - это обработчик php или другой серверный язык

Добавлено через 6 минут
И забыл добавить - а почему вы сразу не обернули весь код jQuery в DOM-Ready?
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 17:54  [ТС]
в данном случае false - именно строка, а не логическое значение. Хендлер возвращает в данном случае именно такой ответ в качестве неудачного выполнения операции. Дело точно не в серверной части, там все работает как надо. Дело именно в том, что происходит именно повторное отправление данных. Нажав кнопку отправить, он отправит данные, а потом отправить еще несколько раз, в соответствии с тем, сколько раз я заполнял форму
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 17:57
Значит дело в плагине modal и это уже практически наверняка, раз вы отмели ошибки в обработчике, а в JS грубых ошибок нет.
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 18:00  [ТС]
А причем здесь модал? Это всего лишь bootstrap, который выводит сообщение об ошибке. Я его кстати тоже убирал, не помогло. Могу приложить скриншот запросов, может вы разберете.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 18:07
Я не художник, чтоб разбираться в изобразительном исскустве и скриншоты вряд ли помогут А если у вас есть в инете эта страница, то возможно и помог бы.
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 18:14  [ТС]
Есть, но там что называется костыль. Сделал синхронную передачу пока, это позволило предотвратить повторные отправки за счет того, что форма успевает очиститься перед повторной отправкой.



На первом скриншоте сам заголовок.
На втором показано как происходит отправка. Первый блок- отправка в первый раз, второй блок - заполнил еще раз очищенную форму и отправил (ушло 2 запроса почему то), ну а 3ий - заполнил форму чистую 3ий раз и ушло 3 запроса. Почему так?
 Комментарий модератора 
Прикрепляйте файлы и изображения к сообщениям.
https://www.cyberforum.ru/abou... post594251
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 18:16
И могу предложить такой вариант: вы не прописываете форму сразу, держите ее где-нибудь подготовленную, а добавляйте только тогда, когда открывается модальное окно. И, естественно, полностью удаляйте, после завершения операции.
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 18:19  [ТС]
Нет, форма сразу прописана банальным html. vladimirskymed.ru - там форма снизу. О ней речь. Если присмотреться, за модальным окном всплывает окошечко что форма не заполнена (если отправить запрос). Это как раз попытка повторной отправки. Почему она возникает, без понятия.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 18:24
Заголовки тут ни при чем, второй скрин - ничем не поможет. И да, синхронная передача может быть выходом, но я бы все-таки разобрался в чем дело. Я с бутстрапом не работаю, но предполагаю, что повторные отправки могут быть делом его "рук".

Добавлено через 1 минуту
Ссылка битая
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 18:28  [ТС]
http://vladimirskiymed.ru/ - Вот ссылка
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 18:32
Не знаю, огорчу вас или обрадую, но у меня отправлялось по одному разу и никаких повторов небыло.
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 18:38  [ТС]
Это как раз из-за того что там синхронная передача. Повторные попытки есть, но они не проходят, так как форма в этот момент уже пуста. А отправки не произойдет, так как поля не заполнены. Если хотите, могу на час включить синхронную передачу и сами убедитесь
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 18:40
Ну, а зачем же мне смотреть на синхронную? Включите асинхрон.
0
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 20
08.02.2014, 18:59  [ТС]
Включил, смотрите
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.02.2014, 19:22
Лучший ответ Сообщение было отмечено Иван Самодуров как решение

Решение

Код в том файле, обязательно обернуть в DOM-Ready!!!
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var form_global;
$('body').on('click', '#accept_order', function(e){
    e.preventDefault();
    form_global = $('#free_order_form');
    var f_data = null;
    f_data = form_global.serialize();
    var link = form_global.attr('action').trim();
    var c_name = form_global.find("input[name=client_name]").val().trim();
    var c_phone = form_global.find("input[name=client_phone]").val().trim();
 
    if(c_name == '' || c_phone == ''){
        $("#alrt_msg").stop(true).slideDown(250).delay(2500).slideUp(250);
        return false;
    }
    $.ajax({
        method:"POST",
        cache: false,
        url:link,
        data: f_data,
        success: freeOrder_Success
    });   
});
Красоту вам не наводил. Вторая функция (freeOrder_Success) может быть без изменений
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2014, 19:22
Помогаю со студенческими работами здесь

Ajax http запрос с локалхоста
Я тут аякс изучаю. И вот с чем я столкнулся: <script type="text/javascript"> var xmlhttp; function...

Получить PHPSessid из HTTP заголовков
вот в headers^ Transfer-Encoding: chunked Connection: keep-alive Keep-Alive: timeout=200 Pragma: no-cache Cache-Control:...

Запись заголовков HTTP клиентов
Прошу прощение за дубль топика, но думаю этот раздел именно для этого вопроса. Мне необходимо записать полные заголовки клиента...

Запись заголовков HTTP клиентов.
Мне необходимо записать полные заголовки клиента (браузера) в файл при его запросе на скрипт. Подскажите пожалуйста, как это осуществить...

Изменение заголовков запроса с http2 на http
Учусь писать скрипты для анализа различной информации по сайтам. Планирую использовать curl, но пока не знаю как правильно формировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru