Promblem s prijmutim jsonu → AJAX

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Doktor10
Člen | 2
+
0
-

Ahoj lidi,

Asi jsem neco spatne pochopil v nette(php) jsem novacek. Nicmene par webu v nette jsem uz udelal a z problemu vzdy nekjak vygooglil, ale vcera naskytl problem pri zpracovani json, ktery posilam ajaxem pomoci AngularJS. Nevim zda-li jsem uplne mimo pri zpracovani json v presenteru. Snazim se o tohle:

Odeslu json na adresu: /app/insertcategory → potud vse OK
V presenteru App v metode actionInsertCategory($json), prijmu parametr $json a ten si posleze ulozim do DB.

Problem je v tom, ze pres parametr neziskam nikdy zadna data, vzdy NULL. Uz jsem nad tim stravil par hodin a nejak se nemohu pohnout z mista.

Nicmene tohle je muj kod:

public function actionInsertCategory($name) {
    if ($this->isAjax()) {
        $catgName = json_decode($name, true);

        if ($catgName['name'] != null) {
            $this->payload->message = 'win';
            $this->terminate();
        } else {
            $this->payload->message = 'again NULL';
            $this->terminate();
        }
    }
}

JS script zde neuvadim, ten neni podstatny.

Poradite prosim? :)

Editoval Doktor10 (13. 11. 2013 17:19)

Doktor10
Člen | 2
+
0
-

Tak nakonec jsem na to prisel. Posilam reseni.

<?php
$input = file_get_contents('php://input');
$data = json_decode($input);
?>

Takze

<?php
    public function actionInsertCategory() {
        if ($this->isAjax()) {
            $name = file_get_contents('php://input');
            $data = json_decode($name);

            // do stuffs
        }
    }
?>
Majkl578
Moderator | 1364
+
0
-

Doporučuji vstupu bezhlavě nevěřit a kontrolovat, zda je to opravdu JSON a je v pořádku. To je nejsnazší s použitím Nette\Utils\Json::decode(), kde při nějakém problému obdržíš výjimku Nette\Utils\JsonException.