Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Сравнить старое и новое значения (https://javascript.ru/forum/jquery/59367-sravnit-staroe-i-novoe-znacheniya.html)

rostik1991 08.11.2015 12:10

Сравнить старое и новое значения
 
Доброе утро. Есть у меня скрипт который отправляет запрос на сервер каждых 3 секунды. Проблема у меня в том, что я не в курсе как сохранить и сравнить два значения. Сейчас покажу.
$(document).ready(function(){
    var audio = $('#audio_message');
    setInterval(function(){checkData()}, 3000);
    function checkData(){
        $.ajax({
            url:'',
            type: "POST",
            dataType: 'html',
            data: {
                check_orders:1
            }, 
            success: function (res) {
                var curr_id = res;
                var new_id;
                //тут мне надо сравнить два значения,
//значение предыдущего запроса и значение текущего запроса
//то есть, нужно сохранить значение самого первого запроса,
//и если значение следующего запроса такое же, 
//мы просто ждем следующий запрос,
//если значение отличается - запускаем аудиофайл
                audio.get(0).play()
//и сохраняем его в переменную new_id
//сравнивать нужно curr_id и new_id
            },
            error: function( xhr, textStatus ) {
                alert( [ xhr.status, textStatus ] );
            }
        })
    }
});

DjDiablo 08.11.2015 12:24

Я чо то неуловил в чём прикол.

$(document).ready(function(){
    var oldValue,
          audio = $('#audio_message');

    setInterval(function(){checkData()}, 3000);
    function checkData(){
        $.ajax({
            url:'',
            type: "POST",
            dataType: 'html',
            data: {
                check_orders:1
            }, 
            success: function (res) {
                if(oldValue!==res) audio.get(0).play() //сработает при первом запуске то же
                oldValue=res; 
            },
            error: function( xhr, textStatus ) {
                alert( [ xhr.status, textStatus ] );
            }
        })
    }
});

rostik1991 08.11.2015 12:35

Спасибо, работает.
Но теперь выскочила другая проблема. Объясню всю суть моего обращения.
Этот скрипт проверяет нет ли в базе нового заказа, и возвращает id заказа. Надо сделать так, чтобы если новый заказ уже один раз прозвучал, чтобы после этого аудио файл не включался до тех пор, пока не сделают еще один заказ (даже после перезагрузки страницы). Может подскажете как решить этот вопрос ?

DjDiablo 08.11.2015 12:49

Это сложный вопрос.

Для идеального решения надо понимать
1) привязаны ли звуковые опопвещения к конкретному пользователю или достаточно их привзяать к браузеру.
2) почему задачу решаете не через сокеты или long polling а через регулярные http запросы
3) если используем запросы то почему решаем задачу с определением изменений на клиенте а не на сервере.

Ну если на клиенте и с ajax запросами и не привязывать к конкретному юзеру, то достаточно просто хранить предыдущее значение в

1) куки (только если в res какое-то число или крохотная строка),
2) или web storage http://htmlbook.ru/html5/storage,
3) или IndexedDB http://habrahabr.ru/post/213515/
4) ... может где-то ещё (websql и пр)

выбор технологии нужно делать в зависимости от требований к поддержке браузеров


Часовой пояс GMT +3, время: 19:31.