Autor Zpráva
Medvídek
Profil
Ahoj,
mam problém se settimoutem v IE, jakékoliv verzi. Podle konzole ve FF to nehlásí žádnou chybu, takže opravdu netuším, čím to může být.

Kód:
<script>
   var setCas_32 = 10000;
   var stav_32 = 1;
   function dotaz32() {
     $.getJSON('testovaci.php?id=32&typ=0', function(data) {
      $('#hlavicka_32').html(data.hlavicka);
      $('#blok_32').html(data.blok);
      $('#paticka_32').html(data.paticka);
       if(data.cas != ''){setCas_32 = data.cas*1000;}
       if(data.stav == 2) {
        $('#box_32').css('background-color','#C64646');
       }
       if(data.stav == 1){
        $('#box_32').css('background-color','#FFFF80');
       }
       if(data.stav == 0){
        $('#box_32').css('background-color','#00A700');
       }
       if(data.stav == 3){
        alert('chyba');
       }
      });
      setTimeout('dotaz32()', setCas_32); 
    };
    dotaz32();
   </script>
   
    <div id="box_32" class="box">
      <div id="hlavicka_32" class="hlavicka">
      </div>
      <div id="blok_32" class="blok">
      </div>
      <div id="paticka_32" class="paticka">

      </div>
    </div>


Ukázka zde: http://data.69-design.cz/ajax/ajax.php
Kcko
Profil
Přesun si ten JS blok až pod to HTML.
Medvídek
Profil
Kcko:
Hodil jsem a nic :(
Kcko
Profil
Medvídek:
Mně to funguje, když jsem to zkoušel. Taky by mě zajímalo proč tam nemáš setInterval.
Medvídek
Profil
Kcko:
Mně teda v IE 8 http://data.69-design.cz/ajax/ajax.php nefachá :(
Kcko
Profil

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
	<meta name="author" content="Roman Janko" />

	<title>Untitled 1</title>
</head>

<body>



    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js"></script>


   
    <div id="box_32" class="box">
      <div id="hlavicka_32" class="hlavicka">
      </div>
      <div id="blok_32" class="blok">
      </div>
      <div id="paticka_32" class="paticka">

      </div>
    </div>
    
<script>
   var setCas_32 = 4000;
   var stav_32 = 1;
   function dotaz32() {
        $.get("testovaci.php?part="+Math.random(), function(out){
           $("#blok_32").text(out); 
        });
     }
    
    
    
    dotaz32();
    
    setInterval(function(){
        
        dotaz32();
    },
    setCas_32
    )
    
    
    
   </script>
   


</body>
</html>
    


Kcko
Profil
Zkus toto
$.getJSON('testovaci.php?id=32&typ=0&part='+Math.round()

a když to nepomůže tak si to odlad na tom mém příkladu, který je 100% funkční.
Medvídek
Profil
Kcko:
Tak už to v IE faká, ale jen s defaultně nastaveným timoutem. Nevím, jak dostat ten čas co mi vrátí php do globální proměnné, tohle mi to neveme a netuším proč.

   var setCas_32 = 6000;
   function dotaz32() {
    $.getJSON('testovaci.php?part='+Math.random(), function(out){
      $('#blok_32').text(out.blok);
       setCas_32 = out.cas*1000; 
       //pokud si tady vypíšu proměnnou setCas_32, tak má správně hodnotu 2000
      });
    }   
    dotaz32(); 
    setInterval(function(){dotaz32();}, setCas_32)

Chamurappi
Profil
Reaguji na Medvídka:
AJAX funguje asynchronně (to je to první áčko ve zkratce), callback funkce se zavolá až dorazí data — tedy později, když už běh skriptu, který požadavek vyvolal, skončil.
Chceš-li, aby rychlost mohl nastavovat pravidelně načítaný zdroj ze serveru, nastavuj timeout z callbacku.
Medvídek
Profil
Chamurappi:
Teď jsem trošku natvrdlej, myslíš volat timout už přímo v tý funkci, jako sem to měl v [#1] na řádku 23?
Medvídek
Profil
Tak zřejmě vyřešeno, nechal jsem to jak to bylo na začátku, akorát s jiným zápisem timeoutu. Díky.

<script>
   var setCas_32;
   function dotaz32() {
    $.getJSON('testovaci.php?part='+Math.random(), function(out){
      $('#blok_32').text(out.blok);
       setCas_32 = out.cas*1000;
        setTimeout(function(){dotaz32();}, setCas_32);  
      });
    }   
    dotaz32();  
    </script>
_es
Profil
Medvídek:
setTimeout(function(){dotaz32();}, setCas_32);
Prečo tak divne? Dá sa to takto:
setTimeout(dotaz32, setCas_32);
Viď aj tu.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: