Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX]bezpośredni odnośnik podstrony ładowanej ajaxem
Forum PHP.pl > Forum > Przedszkole
cent4
Mam podstrony ładowane ajaxem - jak zrobić bezpośredni link do takiej podstrony?:

  1. <li><a style="cursor:pointer" target="_parent" value="load()" id="load_galeria" class="opacity">GALERIA</a></li>
  2. ...
  3. <script type="text/javascript">
  4. $.ajaxSetup ({
  5. cache: false
  6. });
  7. var ajax_load = "<br><br><br><CENTER><img class='loading' src='images/load.gif' alt='' /></CENTER>";
  8.  
  9. $("#TRESC").html(ajax_load).load("ajax/o_nas.php");
  10.  
  11. $("#load_galeria").click(function(){
  12. $("#TRESC").html(ajax_load).load("ajax/galeria.php");
  13. });
  14.  
  15.  
  16.  
  17. </script>
Spawnm
Możesz dać <a href="/strona.php" id="tresc"> i przy onclick zwracać false aby nie było przeładowania.

Chyba że chcesz mieć adresy strona.pl/#tresc to poczytaj o http://php.net/parse_url
cent4
  1. <li><a href="#!/galeria" onclick="ajax.load('ajax/galeria.php','TRESC',false,'#!/galeria','');return false;">GALERIA </a></li>


Ale coś nie działa... - adres na górze jest w odpowiedniej formie: strona.pl/#!/galeria ale jak podaję komuś taki link, to jak się go kliknie odwołuje do strony głównej...
nospor
No tak, a teraz bedac na stronie glownej masz wziasc adres, podzielic go po # i przekierowac tam gdzie trzeba.

Ale zdecydowanie lepszym rozwiązaniem jest rozwiązanie nr1 ktore podał ci Spawnm
cent4
Niestety jak dałem:
<a href="/strona.php" id="tresc">
to nie działa
nospor
a ONCLICK dolozyles dla ajaxa?
cent4
Właśnie nie - jak to dodać do tej funkcji?
nospor
facepalmxd.gif
zalammujesz mnie z kazdym swoim tematem na forum....

To juz dodawales pare postow wczesniej ONCLICK.....
onclick="ajax.load('ajax/galeria.php','TRESC',false,'#!/galeria','');return false;"
Nie umiesz skopiowac kawalka swojego kodu??
cent4
hm...
umiem kopiować :-)
ale niestety to nie działa dalej - onclick'a już wcześniej kopiowałem, tylko chciałem się upewnić, gdzie to wkleić.
Tak czy siak - dalej nie działa...
Przepraszam, że podobno "załamuję" ale ta porada nie działa...
nospor
Chlopie, jestes tyle lat na forum i jeszcze nie potrafisz zadac pytania jak normalny czlowiek, tylko zadajesz jak 5 letnie dziecko..... nie dziala.... No co to za opis problemu?? Nauczu sie wkoncu, ze jesli cos nie dziala to nalezy napisac:
- czym objawia sie to nie dzialanie
- jak powinno dzialac prawidlowo a jak dziala teraz
- czy wystepuja jakies bledy (np. w konsoli Firebug w FIREFOX lub normalne bledy w php)
oraz ze nalezy podawac aktualny kod... skad mamy wiedziec co w danej chwili natworzyles i co ci nie dziala :/
cent4
OK. Zatem jeszcze raz.
Mam stronę w niej menu, odnośniki z menu ładują za pomocą ajax treść strony do innego div'a.
Cel jaki chcę osiągnąć to aby zrobić odnośniki linkowalne, aby można je było przekazywać w mailach.

To co mam w tej chwili to:

  1. <ul id="d">
  2. <li><a href="#!/o_nas" onclick="ajax.load('ajax/o_nas.php','TRESC',false,'#!/o_nas','');return false;">O NAS</a></li>
  3. <li><a href="#!/oferta" onclick="ajax.load('ajax/oferta.php','TRESC',false,'#!/oferta','');return false;">OFERTA</a></li>
  4. <li><a style="cursor:pointer" target="_parent" value="load()" id="load_dla_firm" class="opacity"">DLA FIRM</a></li>
  5. <li><a style="cursor:pointer" target="_parent" value="load()" id="load_przedszkole" class="opacity"">PRZEDSZKOLE</a></li>
  6. <li><a href="#!/promocje" onclick="ajax.load('ajax/promocje.php','TRESC',false,'#!/promocje','');return false;">PROMOCJE</a></li>
  7. <!--
  8. <li><a href="#!/galeria" onclick="ajax.load('ajax/galeria.php','TRESC',false,'#!/galeria','');return false;">GALERIA</a></li>
  9. -->
  10.  
  11. <li><a style="cursor:pointer" target="_parent" value="load()" id="load_galeria" class="opacity">GALERIA</a></li>
  12.  
  13. <li><a href="#!/kontakt" onclick="ajax.load('ajax/kontakt.php','TRESC',false,'#!/kontakt','');return false;">KONTAKT</a></li>
  14. </ul>


....
niżej funkcja ajax:
  1. <script type="text/javascript">
  2. $.ajaxSetup ({
  3. cache: false
  4. });
  5. var ajax_load = "<br><br><br><CENTER><img class='loading' src='images/load.gif' alt='' /></CENTER>";
  6.  
  7. $("#TRESC").html(ajax_load).load("ajax/o_nas.php");
  8.  
  9. $("#load_galeria").click(function(){
  10. $("#TRESC").html(ajax_load).load("ajax/galeria.php");
  11. });
  12.  
  13. $("#load_dla_firm").click(function(){
  14. $("#TRESC").html(ajax_load).load("ajax/dla_firm.php");
  15. });
  16.  
  17. $("#load_przedszkole").click(function(){
  18. $("#TRESC").html(ajax_load).load("ajax/przedszkole.php");
  19. });
  20.  
  21. </script>



Problem:
podstrona:
strona.pl/#!/o_nas
i
strona.pl/#!/oferta
i
strona.pl/#!/promocje
i
strona.pl/#!/kontakt
mają widoczny adres za pomocą:
  1. onclick="ajax.load('ajax/promocje.php','TRESC',false,'#!/promocje','');return false;


ale niestety nie są linkowalne... czyli jak je przekazuję w mailu to jak ktoś kliknie - wchodzi na stronę główną, a nie na podstronę.

próbowałem z onclickiem w funkcji ajax ale niestety nie działa tak jak ma.

Myślałem, że opis jest czytelny ale teraz już na pewno wszyscy zrozumieją...

Firebug wyrzuca błąd:
Error: Syntax error, unrecognized expression: #!/oferta
...{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAt...
nospor
Przeciez juz ustalilismy, ze w HREF ma nie byc zadnego #########. Tak czy nie?

<a href="http://twojastrona.pl/ajax/o_nas.php" >O NAS</a>
I taki link w mailu przekieruje cie na strone ajax/o_nas.php
Chyba ze masz tak zrobiony silnik, ze strony z ajax mozna odpalac tylko przez ajax - no to wowczas musisz przerobic
phpion
Zamiast:
<a href="#!/o_nas"...
daj:
<a href="/o_nas"...
+ oczywiście tej magiczny onclick.
cent4
Przecież strony można odpalać tylko poprzez ajax - to jasno wynika z kodów o które zostałem poproszony...
nospor
Skoro strony mozna odpalac tylko przez ajax, to pozostaje ci drugie rozwiazanie z # i na stronie glownej jak w linku bedziesz mial # to masz wowczas ajaxem zaladowac wlasciowa strone - to skolei wynika z postow, ktore juz ci pisalismy

Cytat
to jasno wynika z kodów o które zostałem poproszony...
No wlasnie nie, nic takiego nie wynika. Bardzo czesto takie strony mozna odpalac przez ajax ale maja one tez bezposrednie swoje odpowiedniki - jak to w kazdej normalnej aplikacji. No ale skoro u ciebie tylko przez ajax, to patrz akapit wyzej
cent4
rozwiazanie z # - jak w linku bede mial # to jak ajaxem zaladowac wlasciowa strone?
nospor
Przecież masz kod do wysyłania ajax..... Teraz tylko zamiast aktywować go na klikniecie w link masz go odpalac gdy w linku bedzie #
cent4
Wiem, że chodzi o fragment:
  1. $("#load_dla_firm").click(function(){
  2. $("#TRESC").html(ajax_load).load("ajax/dla_firm.php");
  3. });

Tylko jaka jest funkcja na link?
$("#load_dla_firm").click(function(){ - bo tu jest obsługa jeśli ktoś kliknie, a jak zrobić to jak będzie odpowiedni link, np: strona.pl/#!/oferta?

Z góry dziękuję.
nospor
W php sprawdzasz czy masz te # czy nie. Jak masz to generujesz kod js o tresci:
$("#TRESC").html(ajax_load).load("ajax/dla_firm.php");
i już
cent4
To wiem, tylko jak za pomocą php zrobić taki case, który będzie rozpoznawał kliknięty link...?
Nie chodzi mi o napisanie całej konstrukcji dla wszystkich stron, tylko o informację, jak rozpoznać co jest w linku?
Dalej sobie poradzę...
nospor
Przeciez w pierwszym poscie w tym temacie masz podany link do funkcji, ktora to robi....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.