Autor Zpráva
DarkKnight
Profil
Zdravím,

vytvářím webovou stránku, kde chci udělat formulář, který by se odesílal bez refresh. Jedná se o zápis dat z formuláře do MySql databáze. Zkoušel jsem vyhledat na googlu něco o odesílání pomocí ajaxu, bohužel to s ním neumím. Přes GET to nepůjde, na to je to až moc dlouhé... Máte s tímto problémem někdo zkušenosti?

Předem díky.
shaggy
Profil
Nerozumiem ti, čo je to reflex? Myslíš refresh?
Ak chceš odoslať formulár bez znovunačítania stránky, tak jediná možnosť bude ajax. Je úplne jedno, či dáta odosielaš cez GET alebo POST, to na to nemá vplyv (refresh prebehne tak či tak).
Chamurappi
Profil
Reaguji na DarkKnighta:
Jak ten formulář vypadá? Některé věci odeslat AJAXem ani dost dobře nejdou (třeba upload souboru). Úplně nejjednodušší a nejspolehlivější je namířit odeslání formuláře do jiného rámu (může to být klidně skrytý <iframe>).

bez reflexu
Reflex je odpověď organismu na vnější podnět. Je fakt, že při určitém úhlu pohledu by se standardní odeslání formuláře dalo považovat za reflex :-)
DarkKnight
Profil
Pravda, špatně jsem to napsal. Jinak jedná se o textový input a select. Je to vlastně chat...


Chamurppi, a jak by to šlo udělat pomocí těch rámů?
Micruss
Profil
uděláš formulář a pošleš ho na skrytej rám
DarkKnight
Profil
no vlastně některé prohlížeče je nepodporují, takže se asi vrátím k ajaxu...
Chamurappi
Profil
Reaguji na DarkKnighta:
Cože? Které? AJAX má slabší podporu než rámy, ale obojí je podporované velmi dobře.

a jak by to šlo udělat pomocí těch rámů?
Atribut target znáš? Může ho mít i <form>.

Jak by se to dělalo AJAXem? Nejprve si napíšeme universální funkci na POSTování:
function odesli(url, data, callback)
{
  var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
  xhr.open("POST", url, true);
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
  xhr.onreadystatechange = function()
  {
    if(xhr.readyState == 4)
      callback(xhr.responseText);
  };
  var postData = [];
  for(var n in data)
    postData.push(encodeURIComponent(n) + "=" + encodeURIComponent(data[n]));
  xhr.send(postData.join("&"));
}
A příklad použití:
odesli("chat.php", { zprava: document.jménoFormuláře.jménoInputu.value }, function(data)
{
  document.getElementById("chat").innerHTML = data;
});

Vaše odpověď

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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