Autor Zpráva
xiaoming
Profil
Mam nasledujici kod a chtel bych ukladat hodnotu do promenne s. Jak na to?

var s = 0;
setInterval(function(){
  s = check(dat, u, p);
  });
}, interval);


function check(dat, u, p) {
  urlcheck = u + p;
  $.ajax({
    type: 'GET',
    url:  urlcheck,
    dataType: 'text',
    mimeType: 'text/plain',
    cache: false,
    success: function(data) {
    data = parseInt(data.replace("\r", "").replace("\n", ""));
      if(data > dat) {
        if( s==0 ) s = Date.now();
      }
    }
  });
  if(Date.now() - s > 10e3) alert('10s');
  return s;
}
Chamurappi
Profil
Reaguji na xiaominga:
To první áčko ve zkratce AJAX znamená asynchronní. Na řádku 23 pracuješ s hodnotou s, která se ještě nezměnila, řádek 19 neproběhl. Cokoliv, co potřebuješ změnit v reakci na odpověď serveru, musíš dělat v callbacku vyvolaném odpovědí serveru.
Krom toho nemá moc smysl vracet hodnotu s (řádek 24) a ukládat ji do toho samého s (řádek 3).
A Date.now mimochodem nefunguje ve starších prohlížečích, používej +new Date().

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: