Autor | Zpráva | ||
---|---|---|---|
peteruu Profil * |
#1 · Zasláno: 13. 5. 2012, 21:18:54
Zdravím, snažím sa vytvoriť posuvný slider ako je napr. tady czc.cz, konkrétne "vybrat dle ceny" ako som postrehol na tej stránke sa parametre z slidera predávajú do url adresy... Chcem zostaviť niečo podobné len sa mi nedarí ich dostať do url adresy.
Prečo ich chcem dostať do url adresy?... chcem si ich v PHP skripte načítať a potom podľa nich filtrovať záznamy. Kludne to nemusi byť v url adrese mohlo by to byt aj v sessions ( s čím sú ako som sa dočítal len problémy pokial ide o jquery) alebo do cookies, ale s tým som sa tiež nikam nedostal.. slider mám iplementovaný podľa dokumentácie jquery. Díky za každé nakopnutie.. Peter |
||
Radek9 Profil |
peteruu:
Při změně toho posuvníku zřejmě budeš PHP posílat AJAXem data, aby ti vrátil správné výsledky, ne? Tak mu prostě přes POST/GET pošli minimální a maximální cenu. Do adresy to můžeš dát např. pomocí window.location.hash nebo window.history.pushState .
|
||
peteruu Profil * |
#3 · Zasláno: 13. 5. 2012, 21:40:13
diky, tiez som rozmyslal o danej možnosti lenže nemám nejaké extrémne dobré skúsenosti s jquery, a preto som to nevedel zrealizovať hlavne čo sa týkalo tej adresy.. nevedel som čo tam napísať.. a predpokladám teda že window.location.hash robí niečo také že zoberie aktuálnu adresu.. správne.. ? resp. nevedel by si to podrobnejšie akosi rozpísať..
|
||
Radek9 Profil |
#4 · Zasláno: 13. 5. 2012, 21:55:53
peteruu:
Ten hash je část adresy za #. Buďto ho z té vlastnosti můžeš získat, nebo tam můžeš uložit nový. alert(window.location.hash); window.location.hash = "novy-hash"; |
||
peteruu Profil * |
#5 · Zasláno: 13. 5. 2012, 22:11:17 · Upravil/a: peteruu
zatial mam spraveny základ
$(function() { $sliderValue=""; $( "#slider-range" ).slider({ range: true, min: 1870, max: 2020, values: [ 1870, 2020 ], slide: function( event, ui ) { if ( ui.values[ 0 ]==1870) $( "#amount" ).val( 0 + " - " + ui.values[ 1 ] ) else $( "#amount" ).val( ui.values[ 0 ] + " - " + ui.values[ 1 ] ); } }); $( "#amount" ).val( 0 + " - " + $( "#slider-range" ).slider( "values", 1 ) ); }); $(window).location.hash = $(this).attr('rok1'); $.ajax({ type: "POST", url: current_url, dataType: "html", data:'rok1='+ui.values[ 0 ]+"&rok2="+i.values[ 1 ], }) Zatial som sa dostal k tomu ze mam vsetky premenne v URL kod vypada takto $(function() { $( "#slider-range" ).slider({ range: true, min: 1870, max: 2020, values: [ 1870, 2020 ], slide: function( event, ui ) { if ( ui.values[ 0 ]==1870) $( "#amount" ).val( 0 + " - " + ui.values[ 1 ] ) else $( "#amount" ).val( ui.values[ 0 ] + " - " + ui.values[ 1 ] ); }, stop: function(event, ui) { window.location.hash = 'rok1='+ui.values[ 0 ]+"&rok2="+ui.values[ 1 ]; } }); $( "#amount" ).val( 0 + " - " + $( "#slider-range" ).slider( "values", 1 ) ); }); |
||
peteruu Profil * |
#6 · Zasláno: 14. 5. 2012, 12:36:07
Zdravím, zatiaľ som dospel k nasledovnému riešeniu (ktoré robí síce reload stránky ale funkcionalita je taká akú som požadoval)
stačilo zmeniť udalosť "stop" na nasledujúcu stop: function(event, ui) { location.reload(); window.location.search = 'rok1='+ui.values[ 0 ]+"&rok2="+ui.values[ 1 ]; } Radek9 skúšal som to cez ten hash ale nakoniec som zistil že ten sa v podstate ani neposiela na server a teda php ho nevie spracovať.. takže location.search to umí. Ale to si iste vedel. V prípade ak viete o nejakom riešení aj bez reloadu stránky.. bol by som velice vďačný. Zatiaľ díky za rady. Peter |
||
Radek9 Profil |
#7 · Zasláno: 14. 5. 2012, 14:04:33
peteruu:
PHP ho sice nepřečte, ale celá ta aplikace je psaná v JS, takže podle mě není problém po načtení stránky hash načít JavaScriptem a poslat ho PHP. Pokud chceš upravovat query string, psal jsem ti v [#2], že je možné použít window.history.pushState (v novějších prohlížečích). Tato funkce ho změní bez reloadu stránky.
|
||
peteruu Profil * |
#8 · Zasláno: 14. 5. 2012, 14:28:45
no ked pouzijem
window.history.pushState adresa sa sice zmeni.. ale stale som v tom javascripte, čiže aj tak musím data poslať cez POST/GET a s tým som mal akosi problém nevedel som to zapísať. Mám niečo takéto $.ajax({ type: "POST", url: "/pozicovna_dvd/projekt1.final/zobrazit_serialy.php", data: "rok1="+rok1+"&rok2="+rok2, success: function(html){ //kod } }); |
||
Radek9 Profil |
#9 · Zasláno: 14. 5. 2012, 14:31:00
peteruu:
Jak přesně nefunguje? V proměnné html bys měl mít obsah toho souboru (tedy zřejmě správné produkty). Stačí tuto proměnnou zapsat do innerHTML nějakého elementu.
|
||
peteruu Profil * |
#10 · Zasláno: 14. 5. 2012, 15:59:09
dodávam živú ukážku nech je všetko jasné http://www.peteruu.chytry.cz/serialy na tejto stranke je slider.. ktory sa zobrazi po kliknuti na zobrazit filter.. vsetko je to len testovacie.. tak omluvte spracovanie... Teraz to funguje tak ze parametre sa davaju do url adresy noo a ten POST prikaz akosi neviem sformulovat... vedeli by ste mi teda nejaký postup ako to udelat vzhladom na danú štruktúru stránky.
|
||
peteruu Profil * |
#11 · Zasláno: 14. 5. 2012, 17:32:37
Tak už som skonštruoval aj ten POST
.ajax({ type: "POST", url: "/pozicovna_dvd/projekt1.final/zobrazit_serialy.php", data: "id2=2", success: function(html){ $("div#obsah").empty(); $("div#obsah").hide().append(html).fadeIn('slow'); } }); fungovať to funguje lenže kedze tam davam odstranit div#obsah... a potom ho chcem naplnit novymi datami... lenze dáta ktoré prijmem sú komplet celá stránka pretože všetko je to do seba tak vnorené že si neveim vytiahnuť len čisto dáta... nie je nejaká možnosť v tom append že by vložil len určitý obsah elementu z nových dát napr. ten #obsah, tým by sa to všetko vyriešilo si myslím.
|
||
Radek9 Profil |
#12 · Zasláno: 14. 5. 2012, 19:02:34
peteruu:
Musíš si vytvořit nějaký speciální soubor, který bude podle POST dat vracet pouze ty boxy. A ty potom načteš do toho divu. |
||
peteruu Profil * |
#13 · Zasláno: 14. 5. 2012, 19:08:37
a nie je je nejaká možnost v tom append nejak vyfiltrovat len tu čast html ktorú potrebujem.. ?
|
||
Radek9 Profil |
#14 · Zasláno: 14. 5. 2012, 19:24:02
peteruu:
Proč načítat zbytečně víc kódu a ořezávat to? Brání ti něco udělat samostatný soubor? |
||
peteruu Profil * |
#15 · Zasláno: 14. 5. 2012, 19:29:02
noo to ma nenapadlo s tým objemom dát.. skúsim to uvidím čo to vypluje... ja som to mal aktualne spravene ako funkciu v jednom hlavnom subore kde je vsetko nahadzane.. a neviem presne ako to bude s premennymi.. ale mam pocit ze to aj tak bude najlepsie riesenie takto to vybavit.. večer to nakódim.. potom sa ozvem ako to dopadlo... zatiaľ díky za rady...
|
||
peteruu Profil * |
#16 · Zasláno: 14. 5. 2012, 23:28:22
noo akurat som to dokoncil.. premenne sa odovzdavaju aj obsah sa aktualizuje podla predstav.. takze uz to ide... diky za rady seš borec.
|
||
Radek9 Profil |
#17 · Zasláno: 14. 5. 2012, 23:40:15
Nemáš zač. ;-)
|
||
peteruu Profil * |
#18 · Zasláno: 16. 5. 2012, 11:43:56
servus prosím ťa pozrel by si sa ešte na jednu vec, resp. ktokoľvek iný, http://www.peteruu.chytry.cz/serialy už to ide všetko ako má, len je tam jeden problém s tým že ked sa v sekcii serialý prepnem na druhú stranu, vobec sa ten filter neukazuje.. teda ten slider.. (pricom dotazy sa vykonavaju dobre) ide proste o to ze uzivatel si nemoze filtrovat zaznamy ked sa nachadza na hocijakej stranke tvaru
serialy/strana-[cislo strany] neviem ci moze mat nato vplyv aj htaccess ...pripadne myslim ze by mohlo byt nieco zle v javascripte zapisane.. ale neviem co.. na nastavovanie parametrov resp. v javascripte vyuzivam jeden cookie plugin...
|
||
peteruu Profil * |
#19 · Zasláno: 16. 5. 2012, 21:02:22
problém som už vyriešil, neprestáva ma udivovať výhoda firebug, mal som špatne nadefinovanú cestu k súboru s funkciou na spracovanie cookies pre javascript, takže pri načítaní druhej stránky v podstate cookie funkcia nebola načítaná a teda sa nemohla ani vykonávať.. :) ak náhodou niekto bude riešiť to isté.
|
||
Časová prodleva: 12 let
|
0