Autor Zpráva
radas
Profil *
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ř..
MunzarM
Profil
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 :-)
radas
Profil *
MunzarM:
opravdu děkuji, takovou reakci jsem ani nečekal porvu se s tim a pak dám vědět...
radas
Profil *
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 *
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 :(
MunzarM
Profil
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áš

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: