Javascript в новой вкладке не такой как в старой
Здорова!
Написал программку с аякс там заходим на страницу и там по таймеру каждые 2 секунды посылается на сервер аякс запрос, когда я открываю эту же программу еще в одной рядом в кладке или нескольких как мне сделать чтобы там были аналогичные данные как и те что на первой вкладке, у меня получается если сервер раз отправил одной вкладке данные, то он потом через время только отправляет другие данные. Как делать? Короче проблема в том когда страница открыта в одной вкладке то все работает нормально, только открываю в одном браузере в двух вкладках, так сразу на одной одно показывается, а на другой другое или вообще на другой полностью зависает сценарий, как это исправить? |
Цитата:
![]() |
Цитата:
Затем мы во второй вкладке в этом браузере открываем этот же сайт и на нем мы не видим тех данных что были в первой, а нужно чтобы сайт в одном браузере отображался одинаково. |
У меня получается в одной вкладке одного и того же сайта аякс подгрузил например 10 строк, открываем этот же сайт в соседней вкладке, а там нету этих 10 строк, там 0 строк. Как сделать чтобы во всех вкладках одинаково отображался сайт?
Мб. данные что подгружаются сохранять в javsScript куку, а затем когда новая вкладка открывается типо перезагрузка страницы вызвать раз функцию которая обновит эту куку или хз. как сделать. Та проблема еще в том что у меня функция аякса вызывается по таймеру и когда открыты две и больше вкладок в браузере, то работает она всего в одной из вкладок, в соседних вкладках просто ничего не выводится, никакой активности, хотя идет запрос аякс непрерывно через 2 секунды и должны по идее обновлятся данные, а че не обновляются хз. Мб. жаваскрипт как то работает не понятно? |
Цитата:
|
Цитата:
И начинай делать тестовый пример. Потому как пиши, не пиши - ясности это не добавит. :) |
Цитата:
ЕЕ нужно наверно по крону вызывать или хз. Та функция что дубли делает она раз вызывается когда сессия пользователя есть и когда в БД flag в 0 установлен, то тогда идет вызов этой функции. Получается одновременно эта функция вызывается в двух браузерах, эта функция изменяет в БД флаг в 1 и видимо она не успевает изменить этот флак до вызова в другом браузере. Оно через раз раз дубли добавляются, а раз по одному разу добавляется. ппц что ж делать? Да похоже крон нужно будет использовать для функции. без крона наверно функцию по условию в двух браузерах сможет 2 раза вызватся, если сделать одновременно запросс? |
От мы создали функцию допустим f() эта функция когда вызывается изменяет в БД столбец flag с 0 на 1 и добавляет 3 записи допустим, а перед ее вызовом проверяется условие если flag=0 то мы вызываем функцию f()
Она вообще должна раз вызватся, делаем запрос одновременно из двух браузеров и что проверяется условие и что получается у нас функция вызовется 2 раза и в БД появятся дубли. Так что получается через аякс функцию нельзя всего один раз вызвать???? Получается через аякс функция может случайно вызватся одновременно n раз да? |
так что по крону запускать скрипт получается лучше чем через javaScript. Имеется введу скрипт который изменяет БД по условию из этой БД. У меня дубли создаются если из двух браузеров запускаю программу, а если пользователей 100 будет из 100 компов, то 100 дублей появится :(. Как делать?
Правильно крон использовать для скриптов которые изменяют данные в БД. А JavsScript аякс только использовать для получения запроса да или для определенного юзера, например мы передаем идентификатор пользователя и меняем его данные. А в моем случае у меня при аяксе на сервере должно сработать условие и тогда данные меняются не для всех пользователей. Так что может похоже одновременно вызватся функция которая изменит данные и условия. У меня получается может, значит крон нужно использовать чтобы раз вызвать функцию которая изменит БД. |
ninja2, все, что ты пытаешься описать словами не проблема JS... Это все от твоего не правильного понимания взаимодействия с сервером.
P.S. Кто такой "Крон"? :blink: Очередной великий дух, которому тебе придется приносить жертву? :) |
Часовой пояс GMT +3, время: 16:11. |