Autor Zpráva
theNookyn
Profil
Vytvářím si script pro komentáře pomocí jQuery a AJAXu, ale nevím jak mám vrátit obsah PHP souboru.

$(document).ready(function(){

    $("input.odeslat").click(function(){
        if(!$("input.jmeno").val()=="" & !$("input.email").val()=="" & !$("textarea.prispevek").val()==""){
            $.post("php/comments/process.php", {jmeno: $("input.jmeno").val(), email: $("input.email"), prispevek: $("textarea.prispevek").val()});
        }else{
            alert("Musíte vyplnit všechna pole!");
        }
    });

});

Pomocí

$.post("php/comments/process.php", {jmeno: $("input.jmeno").val(), email: $("input.email"), prispevek: $("textarea.prispevek").val()});

Já ty data odešlu do souboru process.php a v něm mám vloženo:

print $_POST["jmeno"];

A nevím jak to vypsat na původní stránku.

Jinak se chci zeptat jestli v jQuery neexistuje něco jako "empty" (v PHP) pro podmínky.
DJ Miky
Profil
Jako třetí parametr $.post() přidej callback, tomu je v parametru předán obsah vrácené stránky, viz http://api.jquery.com/jQuery.post/.
theNookyn
Profil
Díky funguje:

$(document).ready(function(){

    $("input.odeslat").click(function(){
    
    var jmeno = $("input.jmeno").val();
    var email = $("input.email").val();
    var prispevek = $("textarea.prispevek").val();
    
        if(!$("input.jmeno").val()=="" & !$("input.email").val()=="" & !$("textarea.prispevek").val()==""){
            $.post("php/comments/process.php", { jmeno: jmeno, email: email, prispevek: prispevek }, function(data){ $("div#vysledek").html(data); });
        }else{
            alert("Musíte vyplnit všechna pole!");
        }
    });

});

Akorát když jsem zkoušel do druhého parametru zadat { jmeno: $("input.jmeno").val(), email: $("input.email").val(), prispevek: $("textarea.prispevek").val() }, tak to nefungovalo :/.
pcmanik
Profil
theNookyn:
Myslim ze lepsie bude v tvojom pripade pripojit udalost submit na cely formular. Ak sa udalost spusti, tak zavolas return false; aby sa neodoslal formular normalnou cestou, ale cez ajax. Aby si nemusel vypisovat vsetky polia, staci ti zavolat $(this).serialize();

Teda nieco taketo:
$(function(){
    $('#id_formulara').submit(function() {
        if ($("input.jmeno").val() != "" & $("input.email").val() != "" & $("textarea.prispevek").val() != ""){
            $.post('php/comments/process.php', $(this).serialize(), function(data) {
                $("div#vysledek").html(data);
            }); 
        } else alert("Musíte vyplnit všechna pole!");
    return false;
    });
});

PS: Nezabudni na overenie na strane servera, ci v tych premennych skutocne nieco je.
theNookyn
Profil
A proč je lepší připojit submit, místo přidání události na button tlačítko?
Radek9
Profil
theNookyn:
Protože ta událost na tlačítku se nespustí, pokud uživatel stiskne enter.
theNookyn
Profil
pcmanik:
Data se budou ještě ověřovat a ošetřovat před vstupem do databáze, takže dobrý.

Radek9:
Taky pravda.
_es
Profil
theNookyn:
A proč je lepší připojit submit, místo přidání události na button tlačítko?
Pretože to je udalosť priamo na to určená, „udalosť odoslania formulára“, a formulár sa dá odoslať aj inak ako kliknutím na tlačítko myšou, trebárs aj cez klávesnicu.

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: