Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.05.2015, 11:24
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Обновление без перезагрузки при изменении данных в поле БД
Собственно тема содержит весь вопрос
Есть БД images(id, img, time)
Вопрос состоит в том как обновить блок div на странице при изменении в БД поля time
Просто очень плохо знаю AJAX
Нагуглил, что нужно пользоваться Long-Polling, но как это делать не смог разобраться
Ответить с цитированием
  #2 (permalink)  
Старый 07.05.2015, 11:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Sn9
Нагуглил, что нужно пользоваться Long-Polling, но как это делать не смог разобраться
А так?
http://habrahabr.ru/post/128535/
Ответить с цитированием
  #3 (permalink)  
Старый 07.05.2015, 11:48
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

на это натыкался, но статья просто как на php написать этот метод. Про БД ничего не сказано. Да и про обновление без перезагрузки
Ответить с цитированием
  #4 (permalink)  
Старый 07.05.2015, 13:10
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Sn9
но статья просто как на php написать
У тебя какой серверный язык?
Ответить с цитированием
  #5 (permalink)  
Старый 07.05.2015, 13:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Sn9,
по сути можно обойтись и без Long-Polling в том понимании как он есть.
Например как можно организовать чат на странице - это посылать запросы с клиента и, если есть новости получать их.
Если клиент получая страницу имеет время Т для ID записи, то запросы клиента, это проверять время Т на сервере, и если оно не равно Т, то обновить информацию в DIV.
Ответить с цитированием
  #6 (permalink)  
Старый 07.05.2015, 13:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Sn9
Про БД ничего не сказано. Да и про обновление без перезагрузки
Т.е. вот такое пошаговое описание процесса тебе ни чего не говорит
Цитата:
Итак, что же из себя представляет Long Polling?
Выглядит это примерно следующим образом:
1) Клиент отсылает на сервер обычный ajax-запрос
2) Сервер, вместо того, чтобы быстро обработать этот запрос и отправить ответ клиенту, запускает цикл, в каждой итерации которого следит за возникновением событий (другой клиент добавил запись или удалил).
3) При возникновении события сервер генерирует ответ и отсылает его клиенту, таким образом завершая запрос.
4) Клиент, получив ответ от сервера, запускает обработчик события и параллельно отправляет очередной «длинный» запрос серверу.

То есть всё довольно просто и понятно.
Ответить с цитированием
  #7 (permalink)  
Старый 07.05.2015, 13:56
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Я поковырялся и сделал, но криво
Файл со скриптом
<script>
    function show()
    {
        $.ajax({
            url: "run.php",
            cache: false,
            success: function(html){
                $("#content").html(html);
            }
        });
    }

    $(document).ready(function(){
        show();
        setInterval('show()',1000);
    });
</script>


А в run.php запара:
if ( isset( $_GET['id'] ) ) {
    // Здесь $id номер изображения
    $id = (int)$_GET['id'];
    if ( $id > 0 ) {
        $query = "SELECT * FROM video_observation WHERE `id`=".$id;
        // Выполняем запрос и получаем файл
        $res = mysql_query($query);
        if ( mysql_num_rows( $res ) == 1 ) {
            $image = mysql_fetch_array($res);
            // Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
            header("Content-type: image/*");
            // И  передаем сам файл
            echo $image['im'];
        }
    }

}
?>

<img src="run.php?id=1" alt="" width="200px"/><br><br><br>
<img src="run.php?id=2" alt="" width="200px"/><br>


Немного переименовал БД саму
теперь таблица video_observation(id, im, timeRecord)

Вот выводит только само изображение, а как сделать, что бы выводило из поля timeRecord текст?
Ответить с цитированием
  #8 (permalink)  
Старый 07.05.2015, 14:58
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Sn9
Вот выводит только само изображение, а как сделать, что бы выводило из поля timeRecord текст?
По твоему скрипту полагается получать html
Сообщение от Sn9
success: function(html){
                $("#content").html(html);
            }
Вот его и шли...
Ответить с цитированием
  #9 (permalink)  
Старый 07.05.2015, 15:43
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Сообщение от ksa Посмотреть сообщение
По твоему скрипту полагается получать html

Вот его и шли...
Я переделал еще удобней, но теперь изображение вообще не шлет

run.php
$sql = "SELECT * FROM $tbl_name"; //выборка всего
        $result = mysql_query($sql) or die(mysql_error());
        while ($rows = mysql_fetch_array($result)):
            echo 'формат изображения в пикселях: '.$rows['formatImage']. '<br>';
            echo 'время снятия изображения: '.$rows['timeRemove']. '<br>';
            echo 'время занесения снимка в базу в миллисекундах: '.$rows['timeRecordMillisec']. '<br>';
            echo 'время занесения снимка в базу в нормальном формате: '.$rows['timeRecord']. '<br><br><br>';
            /*ВОТ ЗДЕСЬ НЕ ЗНАЮ КАК ВЫВЕСТИ ИЗОБРАЖЕНИЕ ИЗ BLOB-поля*/
            ?>
            <? endwhile; ?>
Ответить с цитированием
  #10 (permalink)  
Старый 07.05.2015, 15:49
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Sn9
ВОТ ЗДЕСЬ НЕ ЗНАЮ КАК ВЫВЕСТИ ИЗОБРАЖЕНИЕ ИЗ BLOB-поля
Я не пхпист... Т.ч. не вкурсе как там хранятся картинки и как их выводить "из полей БД"...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление select без перезагрузки страницы Devsanterr Javascript под браузер 1 01.09.2014 09:16
не вызывается функция при изменении option soft4you Общие вопросы Javascript 1 23.07.2014 17:41
mod_rewrite без перезагрузки light Общие вопросы Javascript 1 15.04.2014 13:59
переключение страниц без перезагрузки VEGA jQuery 13 07.03.2013 13:52
Автообновление <div> без перезагрузки страницы Antihrist AJAX и COMET 14 28.07.2008 06:06