IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Jquery ajax + php MVC

Aktivity
Avatar
Marek Šafránek:8.2.2016 14:25

Zkouším na základě zdejšího tutoriálu OOP redakční systém, připojit do akcí ajax, jde o jednoduchou stránku, která obsahuje registrační pole, které se pomocí nasledujícího JS kodu odešle přes index.php, následně router vyvolá AjaxKontroler, který pomocí své metody registruj() uloží záznam do databáze.

$("#dokoncitregistraci").click(function () {
                var email = $("#emailreg").val();

                var heslo = $("#hesloreg").val();
                var hesloznovu = $("#hesloznovureg").val();
                var jmeno = $("#jmenoreg").val();
                var prijmeni = $("#prijmenireg").val();
                var telefon = $("#telefonreg").val();
                var ulice = $("#ulicereg").val();
                var mesto = $("#mestoreg").val();
                var psc = $("#pscreg").val();
                var captcha = $("#captcha").val();

                console.log("jedu");
                $.ajax({
                        type: "POST",
                        url: "../ajax/registrovat/",
                        data: {
                        "email" : email,
                        "heslo": heslo,
                        "hesloznovu" : hesloznovu,
                        "jmeno" :jmeno ,
                        "prijmeni":prijmeni,
                        "telefon":telefon,
                        "ulice":ulice,
                        "mesto" :mesto,
                        "psc" : psc,
                        "captcha" :captcha
                        },

                        dataType: "json",
                        success: function(data){

                                console.log(data);

                                $("#registrace").html("Registrace proběhla úspěšně!<br>Potvrďte registraci klepnutím na odkaz v aktivačním emailu.");
                                 setTimeout(function(){ $("#registrace").delay( 6800 ).hide();
                                        $("#zatmeni").delay( 6800 ).hide(); }, 3000);

                                },
                        error: function (jqXHR) {
                alert("error" + jqXHR);
    },

V databázi se objeví příslušný záznam, a očekávám, že funkce registruj():

public function registrovat()
    {


                if ($_POST)
                {
                        try
                        {

                                $spravceUzivatelu = new SpravceUzivatelu();
                                $spravceUzivatelu->registruj($_POST['email'],$_POST['heslo'],$_POST['hesloZnovu'],$_POST['jmeno'],$_POST['prijmeni'],$_POST['telefon'],$_POST['ulice'],$_POST['mesto'],$_POST['psc'],$_POST['captcha']);

                        }
                        catch (ChybaUzivatele $chyba)
                        {

                        }

                        $id = Db::getLastId();
                                        $navraceno = array('id'=> $id ,
                                                'email'=> $_POST['email'] ,
                                                'jmeno'=> $_POST['jmeno'],
                                                'prijmeni'=> $_POST['prijmeni'],
                                                'telefon'=> $_POST['telefon'],
                                                'ulice'=> $_POST['ulice'],
                                                'mesto'=> $_POST['mesto'],

                                                'psc'=> $_POST['psc']);

                $navratjson = json_encode($navraceno);
                return $navratjson;
                exit();
                }



    }

vrátí do ajaxového kódu JSON s hodnotami......jako SUCCESS.
Ale pokud zadám dateType: 'json', vybíhá pouze error, a pokud dateType odstraním, proběhne SUCCESS ale vypíše komplet HTML kod šablony která se volá na index.php.....

Nějaký nápad jak správně navést příslušný json do JavaScriptu? Jestli MVC nemá nějaká specifika, vracení hodnot?

Odpovědět
8.2.2016 14:25
Stojí-li něco za námahu, je třeba to udělat pořádně...
Avatar
Odpovídá na Marek Šafránek
Patrik Valkovič:8.2.2016 14:32

Ty ten JSON neposíláš, ale navracíš. Místo return použij klasicky echo ;) Pomocí return vrátíš hodnotu programu, který tvůj script volal, takže pravděpodobně Apache.
Aspoň tak by to bylo v čistém PHP, nevím jak je konkrétně ten MVC framework postaven.

Editováno 8.2.2016 14:33
Nahoru Odpovědět
8.2.2016 14:32
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Marek Šafránek:8.2.2016 14:40

zkusil sem změnit return na echo, ale stále probíhá kod error

těch nekolik funkcí co tam chci by měl zajistit AjaxKontroler, pomocí volání jeho metod v ajax url
index.php

...
$smerovac = new SmerovacKontroler();
$smerovac->zpracuj(array($_SERVER['REQUEST_URI']));
...

SmerovacKontroler

...
 public function zpracuj($parametry)
    {
                $naparsovanaURL = $this->parsujURL($parametry[0]);

                if (!empty($naparsovanaURL[0]) && !empty($naparsovanaURL[1]) )
                {
                $this->kontroler = new AjaxKontroler;

                $metodaKontroleru = $naparsovanaURL[1];
                // Volání controlleru
        $this->kontroler->$metodaKontroleru();
                }

    }
...
Nahoru Odpovědět
8.2.2016 14:40
Stojí-li něco za námahu, je třeba to udělat pořádně...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.