Autor | Zpráva | ||
---|---|---|---|
radas Profil * |
#1 · Zasláno: 4. 4. 2011, 21:23:38
Zdravím,
protože JS ani Ajax neovládám, chtěl jsem se zeptat jestli by mě někdo nemohl nějak nasměrovat jak vyřešit můj malý problém. Při přidávání článku se vybíra z rozbalovacího menu kategorie (rubrika) kam patří článek zařadit a pak je input do kterého se vypisuje pořadí článků. A já bych potřeboval právě aby po vybrání rubriky se na pozadi (nechci odesilat celý formulař) vybral článek s největším pořadovým čislém dané kategorie k tomu se přičtla 1 a výsledek by se vypsal do inputu. Vím jak udělat dotazy jen nevím jak přes js/ajax dostat to číslo do toho inputu aniž bych musel posílat cely formulař.. |
||
Časová prodleva: 3 dny
|
|||
MunzarM Profil |
#2 · Zasláno: 8. 4. 2011, 08:51:22
Ahoj
Na tohle je výborný JQuery. Vytvoříš si plugin V souboru script.js OrderAjax = { V něm si budeš dělat funkce V souboru script.js initialize: function(formid, endpoint){ end_url = endpoint; form_id = '#'+formid; $(form_id+' select').change(function(){ <!-- místo toho select si vybereš na co to má reagovat, v tvym případě budeš mít select, ale chceš jen konkrétní, takže form_id+' select#id_selectu', nebo form_id+' select.class_selectu'. To change ti zůstane, bude reagovat na změnu... --> OrderAjax.doChange(); return false; }) }, Inicializaci si zavoláš na stránce kde potřebuješ V souboru formular.hmtl, nebo php... <script type="text/javascript"> $(function() { OrderAjax.initialize('ID_TVYHO_FORMU', 'URL_CO_BUDEŠ_VOLAT'); }); </script> Za tu funkci initialize si ještě uděláš funkci, co to vlastně bude dělat V souboru script.js doChange: function(){ var url = end_url; var data = $(form_id).serialize(); $.post(url,data,function(response){OrderAjax.doUpdate(response);},'xml'); <!-- Tohle ti pošle všechny data z formuláře (.serialize()) na url,co sis nastavil v inicializaci a to function(response){OrderAjax.doUpdate(response);} je callback, kterej se spustí až dorazí odpověď od serveru --> }, No a nakonec zpracujeme odpověď. V souboru script.js doUpdate: function(response){ if (response) { var positionId = response['positionId']; <!-- tady budem mít uložený číslo pozice vypočítaný na serveru --> document.getElementById('inputId').value = positionId; <!-- nasetujem ID do inputu, nebo kam chceš --> } } A uzavřít plugin V souboru script.js } a Teď na straně PHPka - tam si to vlastně uděláš jak potřebuješ, třeba nový php soubor, kde si zpracuješ ten POST a odpovíš Je dobrý poslat hlavičku, ze posíláš XML a pak V souboru zpracovani.php echo '<?xml version='1.0' encoding='UTF-8'?>'; echo '<xml>'; echo '<positionId>'; echo $positionId; echo '</positionId>'; echo '</xml>'; Určitě to nebude napoprvý fungovat, ale snad sem to vysvětlil dobře :-) |
||
Časová prodleva: 6 dní
|
|||
radas Profil * |
#3 · Zasláno: 13. 4. 2011, 20:57:28
MunzarM:
opravdu děkuji, takovou reakci jsem ani nečekal porvu se s tim a pak dám vědět... |
||
radas Profil * |
#4 · Zasláno: 13. 4. 2011, 23:51:40
je to skoro super, ale do toho inputu co chci mi to háže misto čislice slovo undefined
a hlavičku jsem poslal :( <xml> <positionId>1</positionId> </xml> |
||
radas Profil * |
#5 · Zasláno: 15. 4. 2011, 00:00:31
no když jsem si to trochu upravil tuto funkci :
doChange: function(){ var url = end_url; var data = $(form_id).serialize(); $.post(url,data,function(response){OrderAjax.doUpdate(response);},''); }, doUpdate: function(response){ if (response) { //var positionId = response['positionId']; document.getElementById('porad').value = response; } } tak to čte vše co je napsané v tom soboru když tam napišu čislo tak se to vše zobrazí jak ma.. problém nastáva, že "nevidim" tu hodnotu z toho selectu, jako by tento přikaz neposílal ty data z toho formulaře na ten soubor (zpracovani.php) $.post(url,data,function(response){OrderAjax.doUpdate(response);},'xml'); nebo pokud posíla,tak nevím jak k nim přistupovat :( |
||
Časová prodleva: 5 dní
|
|||
MunzarM Profil |
#6 · Zasláno: 20. 4. 2011, 07:28:22
Do toho PHP ti to ten formulář posílá POSTem, zkus si někam vypsat celý $_POST abys viděl co v něm máš
|
||
Časová prodleva: 13 let
|
0