| 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: 15 let
|
|||
0