Autor Zpráva
freeTel
Profil *
Dobrý den, mám posuvník (range). Problém je, že mi to zavolá jen jednou. Volám funkci pomocí onmouseout="browser()". Zkoušel jsem snad vše, ale určitě mi funkce ajaxu umožňuje volání jen jednou. Nevíte někdo kde je chyba? Klávesnice a židle? Ten fór znám :-)
function browser(){
  var od = document.iForm.od.value;
  var out = document.iForm.out.value;
  var e = document.iForm.posloupnost;
  var po = e.options[e.selectedIndex].value;
  var st = document.getElementById("stranka").innerHTML;
  var kat = document.getElementById("kategorie").innerHTML;
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     document.getElementById("pr-cart").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET","/ajax/if.php?pricOd="+od+"&pricDo="+out+"&pricPos="+po+"&s="+st+"&kat="+kat,true);
  xhttp.send();
}
Radek9
Profil
freeTel:
Problém je, že mi to zavolá jen jednou.
Můžeš to trošku specifikovat? Kdy se aktuálně zavolá? Při jakých příležitostech by se správně měla zavolat?
freeTel
Profil *
<div onmouseup="browser()">
jinak tam mam pomocí jquery posuvník cen. Když je v pustím posuvník, tak by se měla funkce zavolat a to dělá. Jen jednou. Pokud to chci opakovat, tak už to ignoruje. Chyba je určitě někde ve volání php/ajax. Mám stejné volání v <select name="po" onchange="browser()"> Mohu funkci zavolat jen jednou a je jedno jakým voláním. Když jsem pro test vymazal script níže, tak volání funguje jak má. jen se pochopitelně neprovede to co má.
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     document.getElementById("pr-cart").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET","/ajax/if.php?pricOd="+od+"&pricDo="+out+"&pricPos="+po+"&s="+st+"&kat="+kat,true);
  xhttp.send();
_es
Profil
Dávaš málo informácií, to je potom ako veštenie, viď aj:
Povídání o živých ukázkách
Prípadne daj aspoň kompletný (kompletnejší) kód.
Čo všetko vracia AJAXové volanie?
freeTel
Profil *
Mám te testované, že mi to zavolá php jen jednou. Jak jsem zmínil, tak jen uvedený kod pro volání php má někde chybu. Jen nevím kde. Jinak vše maká jak má

Pro test jsem si tam dal:

<?php session_start();
Header("Pragma: no-cache");
Header("Expires: ".GMDate("D, d m Y H:i:s")." GMT");
Header("Cache-control: no-cache");
Header('Content-Type:text/html; charset=utf-8');
echo date("H:i:s");
echo "<br>".$_GET['pricOd']." - ".$_GET['pricDo'];
?>



Při další události čas a hodnoty zůstávají stejné z prvního volání.


Dal by jsem link, ale dělám to na localhostu a server ještě nemám
freeTel
Profil *
13:39:17
23 - 100

Vrátí mi co jsem zadal v php, ale když dam nové volání, tak čas zůstane stejný i hodnoty range
_es
Profil
freeTel:
jinak tam mam pomocí jquery posuvník cen.
To je konkrétne čo? Nemá to nejaké vlastné udalosti? Prečo používaš <div onmouseup="browser()">?
Okrem toho je nevhodné nazvať funkciu browser a pod. Mohlo by to s niečím kolidovať.
freeTel
Profil *
protože to jinak nejde. Jinak to funguje přesně jak má. Jen ten ajax mi vrátí výsledek jen jednou. Ale když jsem tam dal do té funkce alert a okomentoval ajax kod, tak mi vyhazoval alert při každé události přesně jak potřebuji. Jenom, kdyz dojde na ten ajax, tak je problém. Jedno zavolání a konec. Zkoušel jsem pro test i onclick událost, ale vždycky mi to vrátí jen jednou a můžu klikat jak chci
_es
Profil
Z uvedených informáci ti to asi ťažko niekto vyveští.
Čo je to ten „jquery posuvník cen“?
Komplený kód snáď nie je problém skopírovať podľa Povídání o živých ukázkách - keď aj bez funkčného if.php.
freeTel
Profil *
Svůj zdroj už nemůžu najít, ale něco jako je tohle: nitinhayaran.github.io/jRange/demo


Nekoliduje to s ničím, ale máš pravdu, že každá funkce má mít unikátní název. Ale funguje to jak má. Když vypustím ajax, tak mi to vše vypisuje a testovaní v alertu bylo přesně jak chci aby se to chovalo. Jen je problém, že mi ajax zavolá php jen jednou a pak na všechny události prdí. Zkusil jsem i časové razítko nebo ajax si nechat zavolat v jiné funkci, ale chová se to pořád stejně. Jako by tam byl cash nebo script se měl zavolat jen jednou.


    <fieldset class="noPrint">
      <legend>Filtr:</legend>
      <form name="iForm">
        <p>Seřadit: <select name="posloupnost" onchange="browser()">
          <option value="1">Od nejlevnějšího</option>
          <option value="2">Od nejdražšího</option>
        </select></p>
        <div class="wrapper" onmouseout="priceList(',-');" onmouseup="browser()" onmousemove="priceList(',-');">
          <h3 onclick="browser()">Filtruj podle ceny</h3>
          <div class="range-slider"><input type="text" id="SoPrice" min="1" max="100" class="js-range-slider" value="100"></div>
          <div class="extra-controls form-inline">
            <div class="form-group">
              <input type="hidden" name="od" class="js-input-from form-control" value="0">
              <input type="hidden" name="out" class="js-input-to form-control" value="0">
            </div>
          </div>
          <div id="vySlider"></div>
        </div>
        <script>
          $(window).on('load',function(){
            priceList(',-');
          })
        </script>
      </form>
    </fieldset>



Už jsem to vyřešil. Bral jsem si neexistující data. Přehlídnul jsem docela důležitou funkci. Děkuji všem
_es
Profil
freeTel:
ale něco jako je tohle
No veď tam máš návod, ako to používať, vrátane popisu udalostí.
freeTel
Profil *
Díky
Tomášeek
Profil
freeTel:
Sorry, ale byt xkrat vyzván o dodání kódu, a nedodat ho a chtít stale odpověd, je hloupé.

Odkázat na slider, který funguje, zatímco tvoje implementace nikoliv, je take hloupé.

Jestli chces radu, odkaz, co ti nefunguje a co chces opravit. Jinak asi good luck.

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:

0