Autor Zpráva
Golf
Profil
zdravím a prosím o zamyšlení nad jedním problémem a o případnou radu,

Používám Ajax pro nahrazení části stránky - normálně mi to funguje a je to nějak takto:

<script type='text/javascript' src="server.php?client=all"></script>

<a href="kdyzNemasJavascriptTakSiPockejAzSeTiPrekresliCelaStranka.php" onclick="javascript:HTML_AJAX.replace('target','output.php');return(fa lse);" title="Update target">načíst output.php</a>
<div id="target">tady bude ten output.php</div>


Řekněme, že tuto část kódu vygeneruje skript index.php z nějakých šablon. Pokud zavolám http://localhost/index.php vše je bez problémů.

Jenže, já někdy volám třeba http://localhost/class/method/parameter1/parameter2 a toto přesměruju na index.php pravidlem
RewriteRule .* ./


s tím, že dotyčný index.php si pak udělá něco s těmi parametry - třeba
$requestUri = explode('/', trim($_SERVER['REQUEST_URI'], '/')); -  

$class = array_shift($requestUri);
$method = array_shift($requestUri);
$class->$method($requestUri)


Důležité je, že v tuto chvíli je v url prohlížeče adresa http://localhost/class/method/parameter1/parameter2 a Ajax už nefunguje.

Strávil jsem nad tím celý den, než jsem přišel na tuto souvislost, neb s Ajaxem právě začínám. Je to jeho normální chování ?

Ještě pro shrnutí:
http://localhost - funguje
http://localhost/index.php - funguje
http://localhost/index.php/ - nefunguje
http://localhost/index.php/neco - nefunguje
http://localhost/neco/neco/neco - nefunguje

Napadají mne dvě a pů řešení:
1) Naučit javascript redirect, pokud to nějak jde (a prosím, pokud víte poraďte jak)
2) Změnit redirect tak, aby přesměroval na index.php?section=#1&action=#2
což se mi nelíbí
3) Nebo poté co index rozparsuje parametry uložit je do session, udělat redirect na index.php a pak si je ze session vytáhnout a pokračovat dál jako by se nechumelilo. Toto je jednak drbání levou nohou za pravým uchem, jednak stejně zmizí ta původní url, kterou jsem chtěl zachovat. (oproti řešení 2 vlastně žádná výhoda, spíš nevýhoda, parametry zmizí úplně :-))

Kdož máte nějakou zkušenost, prosím poraďte. Díky
Petr Bolf
los
Profil *
Čo znamená, že nefunguje? Nevráti sa očakávaná odpoveď na požiadavku, ktorú vytvorí metóda replace objektu HTML_AJAX? Alebo to spadne kvôli tomu, že nepozná objekt HTML_AJAX, lebo sa nepodarí pripojiť skript z adresy server.php?client=all?

Mohol povedať viac, než len funguje/nefunguje - napríklad napísať nejaké chybové hlásenie?

Tipujem, že to nenájde súbor na adrese http://localhost/neco/neco/neco/server.php?client.all, ale možno sa mýlim, lebo neviem, ako vyzerajú ostatné presmerovávacie pravidlá. Ak to nie je v tomto, dala by sa vystaviť nejaká ukážka, kde by sa to dalo vidieť?
Golf
Profil
A to je dost možný, to mně nenapadlo. Chová se to tak, že se ten skript vůbec nevykoná a když je to v tom tagu
< a href="neco" onclick="skript();return(false);"
tak to dokonce skočí na tu stránku v href, ačkoliv return false v onclick by tomu měl zabránit. Ale nevím, nejsme schopen nějak ladit javascript, nikdy jsme ho neměl rád :-).
Každopádně už z toho asi dost blbnu, zítra (vlastně dneska) se na to podívám, ale chyba bude asi opravdu tady. No, tak si můžu připadat jako blbec :-). Už jsem neviděl nic jiného, než že musí být nějaká záhada v komunikaci mezi serverem a tím XHLHttpRequest objektem, či který to vlastně ten ajax dělá ajaxem. Ale ten komunikuje, chová se úplně stejně jako běžný požadavek na celou stránku, pokud to dobře chápu.

díky moc za pořádné nakopnutí
Petr Bolf
zero0x
Profil
poradim ti stiahnut si rozsirenie firebug pre firefox. ladenie s nim je pohoda ;-)
Golf
Profil
Tak je to tak, vinil jsem rewrite_mode a ajax a přitom mi chybělo jedno blbé lomítko o pár řádků výš, díky čemuž se nenačítala knihovna javascriptu. No jo, špatně se hledají chyby, když se hledají někde úplně jinde :-) Díky moc.
Firebug jsem si stáhl a vyzkouším.
matak
Profil
Zdravim, možná už je to vyřešené, ale mám podobný problém, zkusím rozšířit:


aplikace běží v adresáři
http://localhost/ajaxShoppingBasket/basket.html

ajax je umísten tady:

<script language="javascript" src="libs/ajax/ajax.js" ></script>
<script language="javascript" src="libs/basket/basket.js" ></script>


ve funkci addToBasket() ze souboru basket.js volám funkci sendForm ze souboru ajax.js to je vše v pořádku problém je s parametrem php souboru volaným ajaxem server ho prostě nenajde, kde hledá soubor basket.php???

pokud v souboru ajax.js bude
Ajax.request.open("POST", url, true);


?

Díky za odpověď
matak
Profil
sory, jen se prihlasim pro odber emailu
Golf
Profil
No, nevím jak máš nastavený .htaccess, ale zkus napsat před url lomítko - takto
/ajaxShoppingBasket/basket.php
matak
Profil
jen pro doplnění podrobněji se to řeší v tomto vláknu:

http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=8&topic=43 255
Toto téma je uzamčeno. Odpověď nelze zaslat.