Autor Zpráva
PecanCZ
Profil
Čau, mohl by mi někdo poradit, jestli jde udělat to, že když by člověk klikl na tlačítko, data by se odeslal na server, zapsala do databáze a bez refreshe se zobrazil výsledek? vlastně jde mi o to, že na webu mám hodnocení komentářů pomocí palců nahoru a dolů a přijde mi strašně zbytečné, když člověk klikne na palec a server ho přesměruje a až pak ukáže výsledek.

Díky moc za jakoukoli odpověď :)
Moderátor Alphard: Přesunuto z PHP do JS.
imploder
Profil
PecanCZ:
AJAX
Neas
Profil
Doporučuju pro ajax použít jquery, pokud si pro něj nechceš napsat vlastní funkce. Šetří to čas. Tady návod:
http://citron.blueboard.cz/clanek-337-jquery-pro-zacatecniky-ajax.html
_es
Profil
imploder:
AJAX
Ale to bez JS nebude funkčné a to by hodnotenie komentárov asi malo byť.
PecanCZ:
Môžeš odkaz smerovať do (aj skrytého) iframe a potom prípadne ešte nejako zareagovať pomocou JS.
PecanCZ
Profil
já mám ve stránce prostě zobrazené čísla, které bych potřeboval aktualizovat, udělám to tedy přes jQuery?
Radek9
Profil
PecanCZ:
udělám to tedy přes jQuery?
To se nás ptáš?
PecanCZ
Profil
Radek9:
ptám se jestli to pujde přes to udělat :)
_es
Profil
Radek9:
udělám to tedy přes jQuery?
Až na to, že ak si jQuery doteraz nepoužíval, tak kvôli takej "prkotine" naťahovať celú JS knižnicu je výrazne neefektívne.
PecanCZ
Profil
_es:
aha, a šlo by to udělat nějak jednodušeji :D přece jen chci aktualizovat dvě čísla z databáze
Radek9
Profil
PecanCZ:
Ano, šlo, dá se najít samostatná ajaxová funkce.
PecanCZ
Profil
Radek9:
mohl by jsi mi pomoct najít takovou funkci? byl bych ti moc vděčný
Radek9
Profil
PecanCZ:
Tady máš moji. Umí to get i post + po provedení spustit funkci, nebo zapsat hodnotu do innerHTML nějakého elementu.
PecanCZ
Profil
Radek9:
díky moc :) a mohl bys mě do té tvojí funkce trochu zasvětit? přece jen jsem ještě začáteční a než něco pokazit tak se radši zeptám, díky
Radek9
Profil
PecanCZ:
ajax("soubor.php?parametr=hodnota", "id_elementu_kam_se_vepise_hodnota");//GET -> innerHTML
ajax("soubor.php", function(data){
  alert(data);
}, {parametr: "hodnota", parametr2: "hodnota2"});//POST -> funkce
PecanCZ
Profil
jo díky, toto už i pro mě srozumitelné, ještě mě ale nedá a musím se zeptat, co mám přesně zapsat místo toho "hodnota" a "hodnota2"
Radek9
Profil
PecanCZ:
Představ si to jako virtuální formulář. Parametr je name a hodnota je value. V PHP to potom vezmeš pomocí $_POST.
PecanCZ
Profil
no...teď jsem se do toho nějak zamotal...díky za pomoc zkusím to nějak vyřešit
Radek9
Profil
PecanCZ:
Prostě nějak takto:
{jmeno: document.formular.jmeno.value, text: document.formular.text.value}
…
echo $_POST["jmeno"]." - ".$_POST["text"];
Chamurappi
Profil
Reaguji na Radka9:
1) Nechápu, proč je pro lidi tak těžké zapamatovat si, aby používali var. Kdykoliv píšu cyklus, tak tam za for ten var cpu, i kdyby byl navíc…
2) Sčítání řetězců po malých částech je pomalé, protože řetězce jsou v paměti konstantní, při přidání jednoho znaku k miliónu se vytváří nový řetězec o délce milión a jeden znak. Efektivnější je spojit pole joinem.
3) „&& id!=""“ — proměnnou id tam nikde jinde nemáš.
4) To, co děláš pomocí encodeURI a dodatečného nahrazení ampersandu, dělá nativní encodeURIComponent.
5) Pokud se v názvu parametru vyskytuje nějaký divnější znak, tak ti to musí selhat, protože nejprve escapuješ hodnotu parametru (nalezenou přes původní název) a pak název parametru — přes ten ovšem už tu hodnotu nenajdeš.
Radek9
Profil
Chamurappi:
1-4 ještě opravím, je to starší skript a už jsem se v něm moc nehrabal. 5 jsem už opravil jak jsem to tam prvně uploadnul (asi tam máš cache), to mě taky hned bilo do očí.
Edit: Aha, tak úplně neopravil.
Edit2: Hotovo, snad už to bude bez chyb.
PecanCZ
Profil
toto pro mě asi ještě není...zkusím se v tom nějak porýpat a snad na to časem přijdu...možná jsem totální magor, ale prostě zaboha nemůžu přijít na to co tam mám dosadit do těch funkcí, ale i přesto díky :)

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