Автор Тема: ajax Изпращане на заявка когато има промени  (Прочетена 4404 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

worldservers

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 3
  • Публикации: 95
Как мога да взема информация от sql да я сложа в ajax и когато стойността се промени да праща автоматично заявката.
Пример:
Показвам потребители он-лайн, да речем 10 и когато някой се логне стават 11. То автоматично да се сменя.
Хората, който разрушават света, имат вратовръзки, не татуировки.

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: ajax Изпращане на заявка когато има промени
« Отговор #1 -: 08 Април 2016, 19:52:56 »
Наобратно трябва да ги направиш нещата. С JavaScript през 10 сек. трябва да направиш да се изпълнява Request към дадена страница, която от своя страна прави-к'вот-прави и ти връща отговор в json формат. После с JavaScript-а го обработваш. На кратко е това. Има и по-интелигентни начини, например, да използваш AngularJS или друг JS фрейм.

worldservers

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 3
  • Публикации: 95
Re: ajax Изпращане на заявка когато има промени
« Отговор #2 -: 09 Април 2016, 00:06:28 »
А дали мога да сложа на ajax timeaut, който постоянно да праща заявката.
« Последна редакция: 09 Април 2016, 00:09:17 от worldservers »
Хората, който разрушават света, имат вратовръзки, не татуировки.

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 5
  • Публикации: 341
Re: ajax Изпращане на заявка когато има промени
« Отговор #3 -: 09 Април 2016, 12:04:54 »
Аз мисля, че е по-добре да сложиш евент при логина, а не на всеки 10 секунди. Демек при всяко влизане на нов потребител да се изпълнява този аjax иначе нещата стават груби.

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: ajax Изпращане на заявка когато има промени
« Отговор #4 -: 09 Април 2016, 12:39:38 »
Аз мисля, че е по-добре да сложиш евент при логина, а не на всеки 10 секунди. Демек при всяко влизане на нов потребител да се изпълнява този аjax иначе нещата стават груби.

Ама по този начин, вече логнатия потребител ако не презареди страницата няма да вижда реалния брой логнати потребители.

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 5
  • Публикации: 341
Re: ajax Изпращане на заявка когато има промени
« Отговор #5 -: 09 Април 2016, 14:50:25 »
Дали?   А защо да не се направи и заявка за логнатите потребители когато нов потребител се логне? И аз мисля сега един сайт и ще се изправя пред този проблем, но мисля, че за тази ajax query трябва повече време за оптимизация. Не мисля, че е дора идеята да се рефрешва сайта постоянно, а да се намери event който при дадена ситуация да прави промени където трябва.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: ajax Изпращане на заявка когато има промени
« Отговор #6 -: 10 Април 2016, 12:06:11 »
Райчо, никой няма да рефрешва, просто през определено време ще праща асинхронна заявка и ако има разлика от преди да обновява само разликата, а ако няма ... на следващото теглене!
Когато се логне нов потребител аз като съм се логнал преди него, как ще разбера? Това става с WEB сокети, но никой не предлага хост с такова чудо!!!
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 5
  • Публикации: 341
Re: ajax Изпращане на заявка когато има промени
« Отговор #7 -: 10 Април 2016, 12:51:19 »
Според мен е по-добре да се направи iframe което д следи какво става в базата.  И на това iframe да му се подават променливи ако нов потребител влезе. Иначе през 10 секунди ajax jquery си е смешно като цяло!

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: ajax Изпращане на заявка когато има промени
« Отговор #8 -: 10 Април 2016, 14:58:50 »
iframe няма как да ти следи базата, той просто ти позволява да вземеш цяла HTML страница и да я вградиш в твоята - нищо повече, няма нищо асинхронно или друго по заданието.
Верният отговор е това, което каза Хана - уеб сокети, но с тях на споделен хостинг - малко трудно. Извикването на асинхронна заявка всеки 10 секунди е начин да се избегне тази лимитация, но има опасност да генерира доста трафик.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

worldservers

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 3
  • Публикации: 95
Re: ajax Изпращане на заявка когато има промени
« Отговор #9 -: 10 Април 2016, 15:22:03 »
Добре де как може да се направи така, че когато изпратя стойност със ajax от sql той да ми връща винаги стойностите в реално време.
Хората, който разрушават света, имат вратовръзки, не татуировки.

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 5
  • Публикации: 341
Re: ajax Изпращане на заявка когато има промени
« Отговор #10 -: 10 Април 2016, 16:28:23 »
Аз лично бих направил така.
Правя iframe което да ми чете controller("url"). Демек си правя usersonline.php
Във sql си правя tablica която ми записва users_online.
При login записвам user-a в тази таблица. Ако желаеш може и да го оптимизираш със session_expire.
Във usersonline.php извиквам всички от тази таблица.
На iframe-to правя рефреш на определени секунди за да не рефрешира цялата страница и ако питаш мен даже бих си направил един бутон който да отваря и затваря iframe-to (show, hide) или (fadeIn, fadeOut)  и му правя проверка ако повече от 20 секунди iframeto е видимо automatic да се hide. И всеки път когато се клика бутона да се рефрешира frame-to това ще ми спести този loop на 20 секунди, но това го виждам на пръв поглед. Ако се постарая мисля, че ще намеря и начин нещата да станат още по-добри.   :)
Като цяло ще дам линк със същия замисъл на iframe което съм си направил за bing
https://www.youtube.com/watch?v=qMV1q1fTsGI
« Последна редакция: 10 Април 2016, 16:34:48 от howto »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: ajax Изпращане на заявка когато има промени
« Отговор #11 -: 10 Април 2016, 16:54:48 »
Добре де как може да се направи така, че когато изпратя стойност със ajax от sql той да ми връща винаги стойностите в реално време.
Ами тия стойности като ги пазиш в базата данни, AJAX-а като чете от нея ще бъде в "реално време", нали така?

А това с iframe-а го забрави - този таг не е напревен с цел да тържи цялото съдържание на сайта ти, да не говорим как гугъл би третирал такова нещо.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 5
  • Публикации: 341
Re: ajax Изпращане на заявка когато има промени
« Отговор #12 -: 10 Април 2016, 16:58:47 »
Цяло съдържание  ??? Iframe просто ще load един foreach от onlineusers.php . Разбира се аз казах iframe, но div вади същия резултат $("name").load("usersonline.php"); Дали е див или ифраме не е важно.

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: ajax Изпращане на заявка когато има промени
« Отговор #13 -: 10 Април 2016, 17:09:50 »
Твойта работа е като – „Защо да направим нещо по лесния начин, като може по трудния...“. Та т'ва с iframe е остарял метод. Резултата навярно ще е същия, но да погледнем от друга страна.

Когато го направиш с iframe, самият този фрейм ти зарежда онази част с потребителите, която част представлява темплейт. Този темплейт е поне 100KB, което си е сериозен трафик за нещо незначително. Все пак ще имаш текст, картинки и ще се рефрешва на 20 сек. В същото време ако го направиш с JS (Ajax), то ти данните за тези потребители ще ги вземеш като JSON формат, което от своя страна генерира 1.5KB трафик, да не казвам, че най-вероятно ще е под това число, понеже ще имаш единствено бройката на потребители, които са се логнали.

И я сега си направи сметката. :)

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 5
  • Публикации: 341
Re: ajax Изпращане на заявка когато има промени
« Отговор #14 -: 10 Април 2016, 17:20:16 »
 Ако желая да оптимизирам кода си мога да върна само php variables и със js вече да си играя с тях и да го направя с минимален трафик. Иначе за рефреша ти казах бутон show hide и когато се натисне show да се рефрешира и информацията, а не на всеки 20 сек. Начините са много зависи ти кой ще избереш.