Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 26.10.2010
Сообщений: 42

Объединение однотипных ajax запросов

01.11.2014, 22:35. Показов 1932. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ряд кнопок на сайте, порядка 10-20, не важно.
Проблема в том что для каждой кнопки используется своё действие и загрузка данных:

Попробовал слепить такую конструкцию:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    function ajax_query(query) {
        var result = "";
        $.ajax({
            type: "GET",
            url: "cgi-bin/show.py",
            datatype: "json",
            cache:false,
            data: query,
            async: false,
            success: function(data) {
                result = data;
            }
        });
        return result;
    }
вызов делаю так:
ajax_query("load_data");

Так то оно работает, но вот не впечатлен, так как, если в success сделать return data, то по итогу возвращается обьект undefined что не является json обьектом, так понимаю связанно с логикой синхронных запросов, если есть возможность растолкуйте на понятно языке почему нельзя return объекта сделать, или это потом что объект возвращается внутрь функции ajax_query.


Интересует также пример, может у кого есть, как оптимизировать множественные ajax запросы на сайте, ведь если объектов которые надо будет обрабатывать будет 100, то это будет жесть.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.11.2014, 22:35
Ответы с готовыми решениями:

Последовательность ajax запросов
Здравствуйте, уважаемые гуру! Столкнулся с интересной головоломкой - создания цепочки последовательных ajax-запросов и рендера...

Синхронизация ajax запросов
Возникла проблема, я отправляю много ajax запросов (ОДНОВРЕМЕННО!), и они все, приходят в разброс, то есть 1 запрос - вернулся через...

Отслеживание всех ajax запросов
Всем привет! Кто-нибудь подскажите, можно ли как-нибудь отследить выполнение всех ajax запросов на сайте - реализовать своего рода...

3
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
01.11.2014, 22:56
InventoR, для начала, уточните два момента:
1. Вы уверены в том, что вам нужно именно синхронное выполнение запроса?
2. Как вы на данный момент определяете то, какое действие нужно выполнять после очередного запроса?
0
3 / 3 / 1
Регистрация: 26.10.2010
Сообщений: 42
02.11.2014, 20:16  [ТС]
1. Тут двоякое, в одном случае да, надо синхронный чтобы не было ожидания и залипания страницы, в другом можно и асинхронно.

2. Просто разгребаю полученный результат и выводу на его основе данные.

Наверное я вас не совсем понимаю, так как мало опыта.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
02.11.2014, 20:56
Цитата Сообщение от InventoR Посмотреть сообщение
надо синхронный чтобы не было ожидания и залипания страницы
Тогда наоборот - асинхронный запрос. Поэтому и спрашивал.
Цитата Сообщение от InventoR Посмотреть сообщение
для каждой кнопки используется своё действие и загрузка данных ... как оптимизировать множественные ajax запросы на сайте
Набросал вам примерчик. За действия каждой кнопки, отвечает отдельная функция в объекте "actions". Имя вызываемой функции берётся из атрибута "data-act", если нужны какие-то дополнительные уникальные данные для передачи, то их тоже можно хранить в data-* атрибутах. По сути, если мне нужно будет добавить очередную кнопку, по нажатию на которую, должно выполнится определенное действие, то мне останется только добавить функцию в объект и дописать кнопке имя этой функции в атрибут data-act. Понятное дело, что функции не привязаны к определенной кнопке и их можно вызывать где угодно или назначать в качестве обработчика для других кнопок.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
var myDiv = $('#mydiv'),
    buts = $('button'),
    actions = {
        init: function(act, obj){
            this.addText(obj);
            return this[act]();
        },
        addText: function(data){
            myDiv.text('Получены данные: ' + data.mydata);
        },
        hideDiv: function(){
            myDiv.delay(1000).effect('explode');
        },
        showDiv: function(){
            myDiv.effect('bounce');
        },
        changeColor: function(json){
            var ci = Math.floor(Math.random() * this.colors.length);
            myDiv.css('background-color', this.colors[ci]);
        },
        colors: ['#060', '#900', '#036', '#ff0', '#f00']
    };
function ajax_query() {
    var $that = $(this),
        cacheTxt = $that.text(),
        act = $that.data('act'),
        query = {
            json: JSON.stringify({mydata:$that.data('id')}),
            delay: 1
        };
    $.ajax({
        type: 'POST',
        url: '/echo/json/',
        beforeSend: function(){
            $that.text('Запрос отправлен');
            buts.prop('disabled', true);            
        },
        complete: function(){
            $that.text(cacheTxt);
            buts.prop('disabled', false);
        },
        dataType: "json",
        cache:false,
        data: query,
        success: function(json){
            actions.init(act, json);
        }
    });
}
buts.on('click', ajax_query);
Я не жду, что вы сразу поймёте всю схему, посему спрашивайте, если чего не ясно.
P.S. На некоторые вещи не нужно обращать внимания, т.к. они сделаны только для работы в песочнице: как формирую данные для запроса, адрес url или не обязательные beforeSend и complete, которыми я воспользовался только для визуализации разделения процесса.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.11.2014, 20:56
Помогаю со студенческими работами здесь

Несколько Ajax post запросов
Здравствуйте. Возникла одна проблема, при клике на кнопку должен отправляться post запрос на файл index.php, запрос отправляется, но почему...

Несколько ajax запросов в одно время
Как можно сделать, чтобы вывод ajax запросов происходил не по порядку, а сразу целиком, после выполнение всех запросов ...

Оптимизирование частых ajax запросов к сервру
Коллеги, дайте совет, хотя бы по каким ключевым словам искать в гугле. Есть форма для поиска с множеством полей, по изменению любого...

Реализация отправки запросов к БД через AJAX
Подскажи пожалуйста как сделать оправку данных из формы через ajax, чтоб не перезагружалась страница. Есть вот: <html> ...

Составление кросс-доменных запросов на Ajax
Добро пожаловать. Я пишу баннерную систему. И по ходу я столкнулся с безопасностью запросов выполняемых Ajax на внешнее доменые имена....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru