Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
AJAX - spustanie 2 scriptov, problem

Registrovaný: 16.07.07
Prihlásený: 31.07.22
Príspevky: 1225
Témy: 92
Príspevok NapísalOffline : 08.12.2010 21:25

Zdravim, na stranke si cez ajax ziskavam udaje z db a nasledne vypisujem, no mam problem, ze mam 2 divy, kde do jedneho potrebujem udaje z jednej tabulky v sekundovej tarifikacii a do druheho mi staci 10 sekundove obnovovanie...

Tu mam kody:



Kód:
function loaduj(){
   if (window.XMLHttpRequest){
     xmlhttp = new XMLHttpRequest();
   }
   else{
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange = function(){
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
      document.getElementById("change").innerHTML = xmlhttp.responseText;
      init();
      }
     }
   
    var url = "ajax/aukcia_ajax.php";
    var params = "idak=<?php echo $id_aukcie; ?>";
   xmlhttp.open("GET", url+"?"+params, true);
   xmlhttp.send();
}

function kliky(){
   if (window.XMLHttpRequest){
     xmlhttp = new XMLHttpRequest();
   }
   else{
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange = function(){
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
      document.getElementById("klikyyy").innerHTML = xmlhttp.responseText;
      init();
      }
     }
   
    var url = "ajax/aukcia_kliky.php";
    var params = "idak=<?php echo $id_aukcie; ?>";
   xmlhttp.open("GET", url+"?"+params, true);
   xmlhttp.send();
}

function init(){
   var t = setTimeout("loaduj()",1000);
}


Na stranke to potom pustam :

Kód:
<body onload="init()">

   <div id="change">
    Loading...
    </div>

     <div id="klikyyy">
loading
  </div>


Uz som to skusal vseliako "kombinovat" aj urobit si funkciu init2 a do body onload to dat tiez, ale nepomohlo... vzdy sla len jedna funkcia, pripadne skakala funkcia loaduj do divu pre funkciu kliky... Ako nato?


Offline

Čestný člen
Čestný člen
AJAX - spustanie 2 scriptov, problem

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 09.12.2010 12:03

V podstate je pointa v tom, ze v tele tvojich fcii miesto volania fcie init len prosto zavedies novy timeout, cim obe fcie od seba mozes oddelit a pre kazdu nastavovat osobitny timeout. Ja ti ukazem sposob, ako to zvyknem zapisovat ja. Este by som ta rad upozornil, ze ako prvy argument setTimeoutu pouzivas retazec, co nie je doporucovane - pouzi referenciu na prislusnu fciu.
Kód:
setTimeout(function kliky() //fciu som pomenoval
{
   //...sem si dopln lubovolny kod...
   xmlhttp.onreadystatechange = function()
   {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
      {
         //...sem tie srandy s innerHTML...
         setTimeout(kliky, 1000); //tu je pouzite to meno fcie
      }
   };
}, 1000);
Dobre si vsimni, ako som to zapisal. Tento isty kod potom pouzijes druhykrat s cislom 10000 (je to tam na dvoch miestach), zasa s lubovolnym kodom vnutri.
Ono to pracuje tak, ze sa spusti odpocitavanie jednej sekundy (ten "vonkajsi" setTimeout), spusti sa kod vo function kliky(), na ktoreho konci je zasa prikaz, aby sa pockalo sekundu a rekurzivne sa fcia kliky zavolala, a tak dookola.
Este ta upozornim, ze je tu pouzity operator function a nie prikaz function, preto ten nazov "kliky" nemozes pouzit nikde inde ako vnutri tela samotnej fcie kliky. Vsade inde by ti volanie kliky() vyhodilo vynimku.
Bola by tu v podstate este jedna moznost, a to pouzitie setIntervalu, co by zabezpecilo cyklicke opakovanie tvojho pozadovaneho kodu, ale z dovodov, ktore sa mi nechce momentalne rozpisovat, urcite neodporucam pouzivat setInterval. Keby bol zaujem, nieco poviem aj k tomu, ale myslim, ze ti staci informacia, aby si sa setIntervalu vyhol.
Otazka pomimo - nechces nahodou tieto dve ajaxove volania spustit aj pri nacitani stranky? Totizto v tvojom (a aj mojom) kode sa tieto fcie prvykrat spustia sekundu, resp. desat sekund po otvoreni stranky - ma to tak byt?


Offline

Užívateľ
Užívateľ
AJAX - spustanie 2 scriptov, problem

Registrovaný: 16.07.07
Prihlásený: 31.07.22
Príspevky: 1225
Témy: 92
Príspevok Napísal autor témyOffline : 09.12.2010 16:01

Vdaka duri, vyborne vysvetlene, cením si to.

A k tej otazke pomimo, zatial som to riesil tak, ze do divu klikyyy som si dal php script ktory pri nacitani stranky vytiahne udaje z db... A potom ked sa pusti ajax script, tie udaje proste prepise. Asi nie moc stastne riesenie, ale funguje :) Ak sa ti chce mi to este vysvetlit, nebudem sa tomu branit :)


Offline

Čestný člen
Čestný člen
AJAX - spustanie 2 scriptov, problem

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 09.12.2010 16:16

Je to dobre riesenie, mozes nechat tak.


Offline

Užívateľ
Užívateľ
AJAX - spustanie 2 scriptov, problem

Registrovaný: 16.07.07
Prihlásený: 31.07.22
Príspevky: 1225
Témy: 92
Príspevok Napísal autor témyOffline : 10.12.2010 19:39

Ešte otázočka. Môže byť že mam slabý net / hosting nestíha zobrazovat nove udaje?
Kedze v pc na wampe mi to ide ako má?
A občas sa stane že sa do divu klikyyy hodia informacie ktore maju byt v dive change? Občas sa to obnovi samo, obcas az po F5...


Offline

Čestný člen
Čestný člen
AJAX - spustanie 2 scriptov, problem

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 10.12.2010 19:42

To prve sa stat moze, to druhe urcite nie. Daj odkaz na zivu ukazku, nech sa pozriem.


Offline

Užívateľ
Užívateľ
AJAX - spustanie 2 scriptov, problem

Registrovaný: 16.07.07
Prihlásený: 31.07.22
Príspevky: 1225
Témy: 92
Príspevok Napísal autor témyOffline : 05.01.2011 23:53

Takze zase som sa do toho pustil a nie a nie to ist...

Link: http://aukcia.dobrestranky.eu/index.php?page=aukcia&idak=6

Po určitom čase sa bud zastavi cas alebo prestane sa aktualizovat zoznam klikov. Ved skuste si to, login/heslo : fero/fero

+ obcas stale skoci odpocitavanie do divu pre historiu klikov alebo naopak

Tu mam kod:

Kód:
setTimeout(function loaduj()
{
   if (window.XMLHttpRequest){
     xmlhttp = new XMLHttpRequest();
   }
   else{
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange = function(){
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
      document.getElementById("change").innerHTML = xmlhttp.responseText;
      setTimeout(loaduj, 1000);
      }
     }
   
    var url = "ajax/aukcia_ajax.php";
    var params = "idak=<?php echo $id_aukcie; ?>";
   xmlhttp.open("GET", url+"?"+params, true);
   xmlhttp.send();
}, 1000);

setTimeout(function kliky()
{
   if (window.XMLHttpRequest){
     xmlhttp = new XMLHttpRequest();
   }
   else{
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange = function(){
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
      document.getElementById("klikacka").innerHTML = xmlhttp.responseText;
      setTimeout(kliky, 3000);
      }
     }
   
    var url = "ajax/aukcia_kliky.php";
    var params = "idak=<?php echo $id_aukcie; ?>";
   xmlhttp.open("GET", url+"?"+params, true);
   xmlhttp.send();
}, 3000);


Spustam to sposobom body onload="loaduj(); kliky();"
Ked nastavim timeout oboch funkcii na 1000, funkcia loaduj sa ani nepusti, ked je to takto ze jedna 1000 a druha 3000 chvilu to ide, ale potom prestane ist bud odpocitavanie alebo sa prestane obnovovat zoznam prihodeni... UZ fakt neviem co s tym, prosim pomoc...


Offline

Čestný člen
Čestný člen
AJAX - spustanie 2 scriptov, problem

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 06.01.2011 11:17

Tie fcie sa spustaju automaticky, po jednej, resp. troch sekundach, pouzivat udalost onload nie je spravne, odstran to. To je ten pripad, na ktory som ta upozornoval:
Citácia:
Este ta upozornim, ze je tu pouzity operator function a nie prikaz function, preto ten nazov "kliky" nemozes pouzit nikde inde ako vnutri tela samotnej fcie kliky. Vsade inde by ti volanie kliky() vyhodilo vynimku.
Tazko sa to vysvetluje. Otvor si JS konzolu (vo vyvojarskych nastrojoch v prehliadaci) a zadaj tam:
Kód:
function f(){}
Uvidis, ze ti tento vyraz vratil undefined (teda nevratil ziadnu hodnotu) - toto je teda prikaz function, ktory zadefinoval fciu f. Skus si ale taketo:
Kód:
var g = function f(){};
Tu samotny vyraz function f(){} musi vracat hodnotu, aby ju bolo mozne priradit do premennej g. Preto je tu function ako operator. V tomto pripade si mozes vyskusat (nie v IE), ze typeof f je undefined - mimo tela fcie je f uz nedefinovane. Presne na tento problem si narazil aj ty, fcia kliky sa zadefinovala len vo vlastnom tele (preto je mozne je pouzit setTimeout(kliky, 3000), ale mimo vlastneho tela (cize napr. v <body onload>) je uz kliky nedefinovane.
Ja sa ospravedlnujem, ze je to taketo komplikovane, ale pisem kody vzdy tak, aby sa mne co najpraktickejsie zapisovali, len nie kazdy sa v tom vyzna.
Ak chces svoje fcie loaduj a kliky spustat pri nacitani stranky - pravdepodobne to si sa snazil docielit onloadom - je riesenie jednoduche. Vyhod ten vonkajsi setTimeout, tym sa z operatoru function stane prikaz function (kedze nebude musiet vracat hodnotu) a budu fcie zadefinovane ako globalne:
Kód:
function kliky()
{
   //telo
   setTimeout(kliky, 3000);
}
...
<body onload="kliky();">


Offline

Užívateľ
Užívateľ
AJAX - spustanie 2 scriptov, problem

Registrovaný: 16.07.07
Prihlásený: 31.07.22
Príspevky: 1225
Témy: 92
Príspevok Napísal autor témyOffline : 06.01.2011 15:37

Nič. Stále nič...
Aj ked odstranim vonkajši timeout, dam do body onload funkcie, aj ked odstranim onload, stale sa to po urcitej dobe zasekne...
Pokiaľ mam nastavene vonkajšie timeouty a nemam body onload, zase preskakuje cas do divu pre historiu prihodeni alebo naopak... Uz fakt neviem, ci som uz natom ja tak zle ze nechapem co pises, alebo to proste nefunguje...
Lebo vsetko co si popisal som vyskusal, bez uspechu


Offline

Čestný člen
Čestný člen
AJAX - spustanie 2 scriptov, problem

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 06.01.2011 16:11

Vies, kde moze byt este chyba? Ty premenne xmlhttp nedefinujes ako lokalne pre obe fcie, ale pretoze si nepouzil klucove slovo var, zadefinovalo sa xmlhttp ako vlastnost globalneho objektu window, preto prakticky loaduj() a kliky() pouzivaju ten isty XMLHttpRequest objekt. Zrejme preto sa to bije. http://diskuse.jakpsatweb.cz/?action=vt ... 106539#var


Offline

Užívateľ
Užívateľ
AJAX - spustanie 2 scriptov, problem

Registrovaný: 16.07.07
Prihlásený: 31.07.22
Príspevky: 1225
Témy: 92
Príspevok Napísal autor témyOffline : 06.01.2011 16:33

Ten var som pridal tuto:

Kód:
if (window.XMLHttpRequest){
    var xmlhttp = new XMLHttpRequest();
   }
   else{
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }


Zatial to ide.. Je to takto spravne?


Offline

Čestný člen
Čestný člen
AJAX - spustanie 2 scriptov, problem

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 06.01.2011 16:52

Je to v poriadku.


Offline

Užívateľ
Užívateľ
AJAX - spustanie 2 scriptov, problem

Registrovaný: 16.07.07
Prihlásený: 31.07.22
Príspevky: 1225
Témy: 92
Príspevok Napísal autor témyOffline : 06.01.2011 16:59

Ďakujem Ďuri, si pán :slaver:


Odpovedať na tému [ Príspevkov: 13 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. spúštanie scriptov v .css

v PHP, ASP

4

409

13.01.2010 13:24

pilná lama glama Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Spustanie Windows XP-Problem

v Operačné systémy Microsoft

4

389

27.12.2007 22:06

deejay-z Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. AJAX problem

v JavaScript, VBScript, Ajax

2

508

07.05.2012 19:37

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ajax Problém konzola neodpovedá

v JavaScript, VBScript, Ajax

3

462

01.05.2022 20:22

misiak171 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ajax problem s DataType

v JavaScript, VBScript, Ajax

4

1414

15.10.2016 13:56

arno Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém pri načítaní prvkov cez ajax

v JavaScript, VBScript, Ajax

0

509

12.03.2012 13:31

blazej44800 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ajax + jquery + div reload + thickbox problem

v JavaScript, VBScript, Ajax

4

1132

22.10.2009 22:03

RealShadow Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s kodovanim pri odosielani cez ajax

v JavaScript, VBScript, Ajax

10

806

05.09.2011 20:23

josephe Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ajax - problem s IE ked ma vratit tabulku

v JavaScript, VBScript, Ajax

0

551

28.03.2009 23:10

oaki Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Spúšťanie

v Operačné systémy Microsoft

3

401

21.03.2012 22:08

emajko159 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. spustanie programov

v Operačné systémy Microsoft

0

328

19.11.2013 12:05

magulator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Spustanie pc

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Ostatné

32

718

18.03.2018 21:28

Peter246 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. spustanie systemu

v Operačné systémy Microsoft

6

481

04.10.2007 19:57

MIkuláš Žigraj Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. spustanie windowsu

v Operačné systémy Microsoft

2

453

26.06.2008 11:28

paulxxx Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. SPUSTANIE APLIKACIE

v Ostatné programy

10

1271

12.07.2007 19:07

cubb Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. spúšťanie hier.

v Počítačové hry

18

659

29.04.2018 8:17

shiro Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra