Autor Zpráva
Peyton
Profil *
Dobrý den,
mám připravený formulář a k němu skript, který jej zpracuje (něco odešle emailem, něco uloží do databáze).
Do nyní jsem to dělal tak, že jsem klasicky submitem poslal Postem data tomu skriptu, který to zpracoval a v případě úspěchu předhodil uživateli stránku s gratulací, že se podařilo jeho dotaz poslat.
Rád bych se nyní posunul dále a to tak, že uživatel po stisknutí submitu pouze pár cm nad formulářem uvidí "lísteček", že jeho dotaz byl v pořádku odeslán.
To by mělo být jedinné, jak uživatel pozná, že odeslal svou zprávu.

Tuším pro mě magické slovo Ajax, ale víc prostě nevím. Poradí někdo více?
Amunak
Profil
Peyton:
Pokud jde o jednodušší, kratší formulář, u kterého tě zajímá třeba jen jedna návratová hodnota, AJAX není nezbytně nutný. Můžeš třeba odeslat data "načtením obrázku", a pak (třeba podle rozměrů toho obrázku) vyhodnotit stav, jak to dopadlo.

AJAX ale určitě bude dobrá volba pro cokoliv, kde se text nevejde do URL.
8vm8
Profil
Můžeš to buď odeslat takhle
<script type="text/javascript">
var data1=$("#tvuj_input1").val(),
      data2=$("#tvuj_input2").val();
$.post('soubor.php', {data1:data1, data2:data2},
   function(output)
       {
            //V souboru proběhne zpracování. Vrátí se zpráva s výsledkem. Tu zobrazíš pomocí této funkce
            $("#status").html(output);
       }
);
</script>

nebo takhle
<script type="text/javascript">
var data1=$("#tvuj_input1").val(),
      data2=$("#tvuj_input2").val();
$.ajax( {
            url: 'soubor.php',
            type:"POST",
            data:({data1:data1, data2:data2}),
            timeout:10000,
            error: function(output) 
                        {
                            alert("Odeslání se nezdařilo");
                        },
            success: function(output) 
                        {
                            alert(output);
                        }
            
        });
</script>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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