Ajax – Komponenta a předání parametru post

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

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);
});
OK3
Člen | 91
+
0
-

Jak vypadá resultHandleUrl? Přijde mi, že data area posíláš v těle požadavku, ne v URL, odkud se bere ten parametr v handleResult($area).

Takže v presenteru přes $this->getRequest()->getPost(), řekl bych..

MartinitCZ
Člen | 580
+
0
-
	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
+
0
-

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
+
0
-

@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
+
0
-

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
+
+1
-

@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
+
0
-

@**Jan Tvrdík**: Díky :) Tohle by mne opravdu nenapadlo. Jen mi bylo divné, že by nešlo předat POST parameter ;)