Ajax – Komponenta a předání parametru post
- MartinitCZ
- Člen | 580
Ajaxem posílám obsah textarey na handleResult($text);
Jenže problém je v tom, že parameter v handle je stále NULL.
Setkal jste se stím už někdo? Jak toto řešit?
public function handleResult($area)
{
dump($area); // Vrací NULL
dump($_POST['area']); // Vrací správnou hodnotu z textarey
if ($this->presenter->isAjax()) {
$this->presenter->payload->area = $area;
$this->presenter->sendPayload();
}
}
$.post(resultHandleUrl, {area: $('.area').val()}, function(payload) {
console.log(payload.area);
});
- MartinitCZ
- Člen | 580
var resultHandleUrl = {link result!} // /...nejaka-url/....?do=texyComponent-result
Ale pokud to chápu dobře, tak posílat obsah v těle požadavku, nikoli
url je základem POST.
Moc se mi totiž nechce tvořit url s obsahem Texy.
- MartinitCZ
- Člen | 580
Ted si prohlížim NetteDocumentationEditor (autorem je Honza Tvrdík) a podle všeho, hlavně #L183 a #L136, by handle měl brát i POST parametry. Případně je to vidět i ve firebugu zde
Editoval martinit (8. 11. 2013 18:02)
- Jan Tvrdík
- Nette guru | 2595
@martinit:
public function handleResult($area) { dump($area); // Vrací NULL dump($_POST['area']); // Vrací správnou hodnotu z textarey ...
Pošli dump $this->request
. Pravděpodobně máš někde
překlep (např. arae
místo area
) nebo ti to
s něčím koliduje (s GET parametrem stejného názvu, třeba). Nebo můžeš
mít taky špatně napsaný router.
- MartinitCZ
- Člen | 580
Dump:
[2013-11-10 12-20-09] Nette\Application\Request #47ad method private => "POST" (4) flags private => array (1) | secured => FALSE name private => "Frontend:Homepage" (17) params private => array (2) | action => "default" (7) | do => "EditorComponent-result" (31) post private => array (1) | area => "This file ids not updated! ************************* Texy! is sexy! ************** Texy! is text-to-HTML formatter and converter library. It allows ... " (6331) files private => array () @ http://127.0.0.1/editor/?do=editorComponent-result
Koukal jsem po překlepu a nikde nic. Routy mám nastavené, jako jsou defaultně v sandboxu.
Mám poslední Nette @dev verzi.
Editoval martinit (10. 11. 2013 12:28)
- Jan Tvrdík
- Nette guru | 2595
@martinit: A je to jasné =) metodu
handleResult
máš v komponentě editorComponent
,
jenomže area
je parametr presenteru, nikoliv parametr té
komponenty. Aby to byl parametr té komponenty, musel by se jmenovat
editorComponent-area
. K sestavení názvu toho parametru můžeš
použít metodu getParameterId().
- MartinitCZ
- Člen | 580
@**Jan Tvrdík**: Díky :) Tohle by mne opravdu nenapadlo. Jen mi bylo divné, že by nešlo předat POST parameter ;)