Promblem s prijmutim jsonu → AJAX
- Doktor10
- Člen | 2
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
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
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
.