Help! - Ajax – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Help! - Ajax – JavaScript, AJAX, jQuery – Fórum – Programujte.comHelp! - Ajax – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Jenda_CZ
~ Anonymní uživatel
4 příspěvky
23. 8. 2008   #1
-
0
-

Zdarvím do fóra.

Mám html formular s radio buttony a jedním inputem pro zadani castky. Ty radio buttony urcuji jakym cislem se bude castka nasobit a zároven pak delit.

Po odeslani se to cele posle do script.php a tam se to spocita a vrati to echo.
Zde je pro lepsi pochopeni obrazek:) http://img246.imageshack.us/my.php?image=97916126aq7.jpg

Cele to funguje perfektne, jenze problem je v tom ze pri kazdem spocitani se musi znovu nacitat obsah stranky.
Na netu sem zjistil ze tohle jde vyresit AJAXEM.

Uz jsem to zkousel podle "example" na netu predelat na "ajax system" ale jeste se mi to nepodarilo.

Potrebuju Ajax Script ktery byl schopny odeslat vsechny ty data metodou POST do toho "script.php" a zaroven vracel z toho scriptu echo ve formatu: $_POST['castka'].

Díky moc



Nahlásit jako SPAM
IP: 85.207.125.–
Reklama
Reklama
bukaj0
Věrný člen
23. 8. 2008   #2
-
0
-
Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Jenda_CZ
~ Anonymní uživatel
4 příspěvky
23. 8. 2008   #3
-
0
-

tak článek sem si přečetl, ale co je mi platný když třeba nevím co mám doplnit místo "//akce, co má funkce provést"?

1. function volanaFunkce(){
2. if(xhr.readyState == 4){ //funkci provedeme, pokud je požadavek ve stavu dokončeno
3. if(xhr.status == 200){ //pokračuji, jen když je vše OK
4. //akce, co má funkce provést
5. }else{
6. alert("Vámi definovaný prostředek nelze nalézt!");
7. }
8. }
9. }

Nahlásit jako SPAM
IP: 85.207.125.–
bukaj0
Věrný člen
23. 8. 2008   #4
-
0
-

Jenda_CZ
ale co je mi platný když třeba nevím co mám doplnit místo "//akce, co má funkce provést"?
Trochu přemýšlej. Neboj, i když hodně lidí tvrdí, že ano, tak to nebolí ;o) Řekni si: „Co chci udělat?“ — „Pokud se změní obsah políčka pro kraj a je tam platný kraj, chci načíst do jiného políčka všechna města v tom kraji.“

Takže realizace může být následující:
1, Sleduješ událost onchange prvku, který obsahuje kraj. Pokud se kraj změní, zavolá se fce, kterou nadefinuješ, aby tu událost sledovala.

2, V té fce zjistíš, jestli je ve formulářovém poli platný kraj (takže třebas ověření, aby tam nebyla hodnota "Vyberte kraj") a je-li, zavoláš AJAXový požadavek na skript, řekněme, PHP skript.

3, V POST datech předáš skriptu proměnnou kraj. Ten ji využije a vybere z databáze všechny města, u nichž je takovýto kraj, a ty města potom vypíše (nejlépe v nějakém dobře zpracovatelném formátu jako je JSON, nebo XML).

4, Teď se „výpočet“ vrací zpět ke klientovi a tady se právě uplatní ta fce, kde je „//akce, co má funkce provést“. Znovu si řekni co potřebuješ („zpracovat a zobrazit data“). Takže data načteš (což je závislé na použitém formátu) a jelikož potřebuješ je všechny dát jako položky nějakého formulářového výběru, odstraníš všechny položky, co tam byly teď a postupně tam nastrkáš ty nové.

Jak jednoduché. Jenom stačí trochu přemýšlet ;o)

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Jenda_CZ
~ Anonymní uživatel
4 příspěvky
23. 8. 2008   #5
-
0
-

Takto by to mělo fungovat ne?

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax</title>

<script src="ajax.js" type="text/javascript"></script>

</head>
<body>

<form name="ajax" method="post" action="">
<input value="POST" onclick="volanaFunkce()" type="button">
</form>

<div id="myspan">
zobrazí se echo?
</div>


</body>
</html>


ajax.js

function vytvorXHR(){

var xhr;
try{
xhr = new XMLHttpRequest();
}catch(e){//pro ppad star verze prohlee
var MSXmlVerze = new Array('MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.5.0','MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp.2.0','Microsoft.XMLHttp');
for(var i = 0; i <= MSXmlVerze.length; i ++){
try{
xhr = new ActiveXObject(MSXmlVerze[i]);
//alert(MSXmlVerze[i]);
break;
}catch(e){
//vzniklou chybu ignoruji a pokrauji nastavenm dal verze
}
}
}
if(!xhr)
alert("Dolo k chyb pi vytven objektu XMLHttpRequest!");
else
return xhr;
}

// pozdavek

var xhr = vytvorXHR();
function vytvor pozadavek(){
var url = "phpscript.php";

xhr.open("POST",url);
xhr.onreadystatechange = volanaFunkce; //dojde-li ke zmn, volej funkci volanaFunkce
xhr.send(null);
}

function volanaFunkce(){
if(xhr.readyState == 4){ //funkci provedeme, pokud je poadavek ve stavu dokoneno
if(xhr.status == 200){ //pokrauji, jen kdy je ve OK
result = http_request.responseText;
document.getElementById('myspan').innerHTML = result;
}else{
alert("Vmi definovan prostedek nelze nalzt!");
}
}
}


phpscript.php

<?


echo "funguje to";

?>

Nahlásit jako SPAM
IP: 85.207.125.–
KIIV
~ Anonymní uživatel
8100 příspěvků
24. 8. 2008   #6
-
0
-

pokud sem pochopil tak ajax jen posle data pomoci funkci do scriptu v XMLRPC a to proste vypocita... nemusis nic odesilat vse se udela v JS

Nahlásit jako SPAM
IP: 77.237.136.–
Jenda_CZ
~ Anonymní uživatel
4 příspěvky
24. 8. 2008   #7
-
0
-

Uz je to OK, pouzil sem jiny script.

Nahlásit jako SPAM
IP: 85.207.125.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

AJAX — založil netman92

Ajax — založil Paja2

Ajax - výpis — založil TominoS

Servlety + AJAX — založil Teks

AJAX bezpečnost — založil Camaxtli

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý