AJAX nefunguje správně na ostrém serveru

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

Ahoj, na localhostu mi běží vše v pořádku, ale na ostrém serveru, kde je NGINX, nikoliv. Mám komponentu košíku, kde se snažím ajaxem měnit počet jednotlivých produktů.

Zjistil jsem, že problém je v prázdných hodnotách $_GET (pouze na ostrém serveru). V console problém není.

$.nette.ajax({
				url: {link changeQuantity!},
				data: { id: id, value: value }
			});

?do=cartForm-changeQuantity&id=16&value=1&_=1447855048393

// v komponentě cartForm
	public function handleChangeQuantity()
	{
    // GET i POST jsou prázdné...
		$id = isset($_GET['id']) ? (int) $_GET['id'] : NULL;
		$quantity = isset($_GET['value']) ? (int) $_GET['value'] : NULL;

		// taky bohužel prázdné
		$test = $this->presenter->getParameter('id');
}

Budu vděčný za jakoukoliv radu.

David Matějka
Moderator | 6445
+
0
-

nemas nahodou v masce routy <id>? protoze parametr ‚id‘ v GET to neprepise

no tim to nebude, kdyz to neni ani v $_GET

Pavel Kravčík
Člen | 1196
+
0
-

Parametry by měly mít název komponenty:

	data: { cartForm-id: id, cartForm-value: value }

Na automatické doplňování používám tuhle funkci:

	$control->getParameterId('value')
Phalanx
Člen | 310
+
0
-

Díky oběma. Jenom hádám – $_GET proměnné budou nejspíš odfiltrovány a do komponenty se vůbec nedostanou (dávalo by mi to smysl podle toho co psal Pavel).

Přes $_POST se do komponenty dostanou.

$.nette.ajax({
				url: {link changeQuantity!},
				type: 'POST',
				data: { id: id, value: value }
			});

Ještě si s tím zkusím pohrát

Editoval Phalanx (18. 11. 2015 15:26)

jiri.pudil
Nette Blogger | 1032
+
0
-

Jak máš nakonfigurovaný nginx? Imo tam nejspíš máš nějaké podobné routování requestů na index:

location / {
    try_files $uri $uri/ /index.php?$args;
}

a nepředáváš v něm to ?$args.