Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 44
1

Как правильно сделать два почти идентичных ajax запроса без копирования дополнительного кода?

08.12.2012, 21:41. Показов 1248. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть два запроса ajax. Один выполняется при загрузке страницы и выдает данные, например за последний месяц, второй запрос отправляется когда выбирается интервал дат. По сути success - обработка и вывод данных идентичны. Как я могу прописать такое? Сделала два ajax:
функцию в success отдельно хотела вынести, а оне не работает, где ошибка?
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
$(document).ready(function(){    
    $.ajax({  //      Это первый ajax  
        type:"POST",
        data: {           
            op: 'tabelle'
        },
        dataType: "json",
        url: "ajax/ajax_uebersicht.php",
        success: function result(){   // здесь стоит одинаковая функция для обработки, я ее отдельно хотела вынести, а оне не работает, где ошибка?        
        }        
    });
    $('#datum2').change(function (){
        var start =$("#datum1").datepicker("getDate");
        var ende = $("#datum2").datepicker("getDate");
        $.ajax({  // Это второй с дополнительными данными
            type:"POST",
            data: { 
                start:start,
                ende: ende,
                op: 'wahl'
            },
            dataType: "json",
            url: "ajax/ajax_uebersicht.php",
            success: function result(){          
            }
        });  
    }) 
   
    
    function result (result) {
               
        $.each(result, function(i) {            
            switch (result[i].status) {
                case 'gespeichert':
                    ....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2012, 21:41
Ответы с готовыми решениями:

Два почти идентичных запроса mysql_query выдают разные результаты
Всем привет! У меня возникла проблема. Я начинающий програмист і вот уже 6 час смотрю на строчку...

Способы сравнить два почти идентичных цвета
Есть два цвета: Color first = { A = 255; R = 150; G = 20; B = 20; } Color second = { A = 255;...

Два идентичных запроса SQL
СУБД POSTGESQL. Анализирую чужой код. Есть таблица Коды, в ней столбец Ключ типа text и столбец...

Два идентичных куска кода работают по-разному
Разбираю чужой код. В одном случае $realty = new Realty(); $ass_user = new User(); ...

8
12 / 12 / 3
Регистрация: 08.01.2012
Сообщений: 83
09.12.2012, 00:46 2
Как говорят хорошие люди - "Если код повторяется, надо писать функцию".
Я бы написан функцию которая как аргумент принемает обьект данных и подставляет его в дата

Javascript
1
2
3
4
5
6
7
8
9
10
function my_request(settings){
   $.ajax({ 
       type:"POST",
       data: settings,
       dataType: "json",
       url: "ajax/ajax_uebersicht.php",
       success: function result(){          
       }
   });  
}
ну и потом вызываете функцию в нужном месте с нужными параметрами
1
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 44
09.12.2012, 00:58  [ТС] 3
я не так давно javascript и jquery знаю, такой комбинации еще не встречала, где-нибудь о ней подробнее прочитать можно?
я выкрутилась немного по-другому :

Javascript
1
2
3
4
5
6
success: function (result){   
                tabelleMitResponseAusgabe(result);
            }
function tabelleMitResponseAusgabe (result) {
               
        $.each(result, function(i) {     ...
в обоих случаях сослалась на одни и ту же функцию - заработало.
0
12 / 12 / 3
Регистрация: 08.01.2012
Сообщений: 83
09.12.2012, 02:09 4
О какой "комбинации" вы спрашиваете? я просто предлогаю вам создать функцию которая выполняет повторяющиеся действия аякс запроса. Как я понял запросы у вас отличаются только свойством data, поэтому я и создал переменную для этого свойства

Добавлено через 10 минут
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 $(document).ready(function(){    
            my_request({op:'tabelle'});
 
            $('#datum2').change(function (){
                var start =$("#datum1").datepicker("getDate");
                var ende = $("#datum2").datepicker("getDate");
               my_request({ start:start,ende: ende,op: 'wahl' });
            }); 
 
            function my_request(settings){
               $.ajax({ 
                   type:"POST",
                   data: settings,
                   dataType: "json",
                   url: "ajax/ajax_uebersicht.php",
                   success: function result(){          
                   }
               });  
            }
            // ваш код далее...
1
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 44
09.12.2012, 16:25  [ТС] 5
Спасибо теперь разобралась!

Добавлено через 23 минуты
если можно еще один вопрос? Какую функцию jquery надо применить чтобы значение предыдущего запроса ajax удалился, а на его место вышел бы второй запрос. сейчас у меня обработка ответа выглядит так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
function tabelleMitResponseAusgabe (result) {
               
        $.each(result, function(i) {            
            switch (result[i].status) {
                case 'gespeichert':
                    var status='<img src="images/document-save.png" alt="save"/></span>';
                    break;
            ....
            
            $('<tr><td class="genehmiegen">...
                    <td class ="summe">' + result[i].summe +'</td>
               ...  </td></tr>'              
                ).insertAfter('tr#th');
insertAfter здесь как добавляет к существующим строкам, а хотелось чтобы как новая строка появлялась
0
12 / 12 / 3
Регистрация: 08.01.2012
Сообщений: 83
09.12.2012, 16:30 6
Цитата Сообщение от Julia_Ber Посмотреть сообщение
Спасибо теперь разобралась!

Добавлено через 23 минуты
если можно еще один вопрос? Какую функцию jquery надо применить чтобы значение предыдущего запроса ajax удалился, а на его место вышел бы второй запрос. сейчас у меня обработка ответа выглядит так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
function tabelleMitResponseAusgabe (result) {
               
        $.each(result, function(i) {            
            switch (result[i].status) {
                case 'gespeichert':
                    var status='<img src="images/document-save.png" alt="save"/></span>';
                    break;
            ....
            
            $('<tr><td class="genehmiegen">...
                    <td class ="summe">' + result[i].summe +'</td>
               ...  </td></tr>'              
                ).insertAfter('tr#th');
insertAfter здесь как добавляет к существующим строкам, а хотелось чтобы как новая строка появлялась
если вы хотите что-бы производилась замена, следует использовать $(селектор на нужный блок).html(тут ваш код)
0
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 44
09.12.2012, 16:54  [ТС] 7
переделала, теперь вообще ничего на экран не выходит
в index.php прописала строку echo
PHP
1
 '<tr id="daten"></tr>';
в *.js
Javascript
1
$("tr #daten").html('<td class="genehmiegen"><img src="images/dialog-apply.png" id="genehmiegen" alt='+ result[i].antrag_id +'></td>
0
12 / 12 / 3
Регистрация: 08.01.2012
Сообщений: 83
09.12.2012, 17:09 8
смотрите что говорит консоль.
например в коде что вы скинули отсутсвует как минимум '); в конце джаваскрипта
0
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 44
09.12.2012, 17:40  [ТС] 9
вроде настроила в index.php прописала явно заголовок таблицы и tbody, теперь ерунда какая-то: из ответа с сервера в таблицу выходит только последяя строчка, получается он первую строчку из json перезаписал. у меня пока массив идет из двух строк иве они должны отразиться в таблице. Я сума сойду!!!
0
09.12.2012, 17:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2012, 17:40
Помогаю со студенческими работами здесь

Два практически идентичных кода, но один почему-то работает медленней
Почему мой код работает намного медленнее? Ведь по сути одно и то же! Мой код: int ans = 0; ...

Как правильно соединить два MySql запроса?
я попробовал соединить два запроса, но вышло ошибка. $result = $mysqli-&gt;query(&quot;SELECT * FROM...

Есть сайт на народе, хочу на ру. почти копию, как правильно сделать, что бы оба работали
Зравствуйте. Есть сайт на народе, хочу сделать на ру. Какие-то страницы будут с копией контента,...

Как правильно сделать перезагрузку каптчи на Ajax'е?
Есть перловый скрипт который генерирует картинку для защиты от спам-ботов. Всё замечательно, но...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru