Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] Wyrzucenie # z urla
Forum PHP.pl > Forum > XML, AJAX > AJAX
bigbadcompany
Witam

Kupiłem ostatnio templatkę. Miała być pod wordpressa niestety okazało się, że można sobie ją samemu przystosować do działania. Jednakże moja wiedza w temacie ajaxa jest strasznie chuda. Dlatego radzę się Was tutaj. Czy istnieje jakiś sposób na wyrzucenie hasha z urla ? Oto kod main.js który przemiela urle przynajmniej tak mi się wydaje. http://notepad.cc/share/XcfPFNq2Nv

Znalazłem także takie funkcje. Chociaż nie bardzo wiem czy chodzi właśnie o to. Chciałbym uzyskać efekt linku w postaci: http://127.0.0.1/home/ a nie http://127.0.0.1/.#/home

Dotychczas pracując w php rolę tę odgrywała 1 funkcja oraz htaccess. Tutaj napiszę szczerze, że nie wiem. Byłbym wdzięczny za pomoc.

Związek z pojawianiem się hasha ma zapewne:

  1. //load hash selected - home page instead
  2. function loadHash(){
  3.  
  4. pageHash = window.location.hash;
  5.  
  6. //if there's a hash, load the appropriate page
  7. if (pageHash.length > 1) {
  8. anchorage = pageHash.split("#")[1]+pageType;
  9. loadContents(anchorage);
  10. }
  11. else
  12. loadContents(homePage+pageType);
  13.  
  14. }


oraz

var pageHash = window.location.hash; //current hash - gets transformed into a url and ajax loaded
var anchorage = homePage+pageType; //current page / link to load

ta sprawdza wywołanie na poszczególnych podstronach

var isGenma = true; //makes sure the page is loaded if someone visits the normal link for instance typography.html
styryl
Tak na szybko przeglądając kod wydaje mi się że musisz pogrzebać przy tej funkcii

  1. //function that handles normal clicks
  2. function linkage(evt){
  3.  
  4. //prevent default redirection - that's only for crawlers
  5. evt.preventDefault();
  6. evt.stopPropagation(); //ignore links with the 'ignore' class
  7.  
  8. if(!$(this).hasClass("ignore")) {
  9. var thisHash = $(this).attr("href").split(pageType);
  10. window.location.hash = "#"+thisHash[0];
  11. }
  12.  
  13. //for external website "normal" links
  14. if($(this).hasClass("external")) window.open( $(this).attr("href"), '_blank' );
  15.  
  16. }


I wynika z tego że ignorowane są linki z klasą ignore. Może zakoduj to:

//var thisHash = $(this).attr("href").split(pageType);
//window.location.hash = "#"+thisHash[0];


bigbadcompany
Po zakodowaniu tych dwóch linijek nie wczytują się strony tzn. po kliknięciu na odnośnik nic się nie dzieje. Jakby się strona zfreezowała. Na potrzebę pomocy w problemie zamieszczam link do strony. Menu z linkami wyłapuje freeza dokładniej rzecz ujmując. A w miejscu slidera powinna pokazać się inna strona. Mam wrażenie jakby Pagetype określał która strona ma być wczytana.

Ta część ignore odnosiła się chyba do linków po lewej przy założeniu, że mam pozycję nawigacji z submenu. Jak najadę kursorem to jak kliknę nic się nie stanie ale otworzy się podmenu. Tak mi się przynajmniej wydaje tongue.gif

Trochę pokombinowałem i jeśli kod wygląda tak:

  1. var thisHash = $(this).attr("href").split(pageType);
  2. window.location = "/"+thisHash[0];


To w efekcie dostaję link taki na jaki kliknę czyli porfolio, blog etc. Jednakże nie mam tego co jest przed czyli całego http://127.0.0.1/

Znalazłem jeszcze coś takiego. Metoda Extended Redirection jednak po wrzuceniu do htaccessa nie spełnia swojej funkcji. Nie widać, żeby coś zmieniała.
styryl
Powiedz mi jeszcze tylko czy chcesz aby strony ładowały się dynamicznie czy przez ajax i chodzi tylko o usunięcie # z adresu?
bigbadcompany
Hmmm... Jeśli mogę zapytać to jaka różnica będzie pomiędzy czytaniem z jednego bądź drugiego ? Chodzi o ewentualne przeładowanie się strony ? Tak, generalnie chodzi mi o wyrzucenie z adresu hasha i późniejsze ewentualne zastosowanie elementów php by móc stworzyć do strony jakiś panel zarządzający treścią. Ale najpierw sam hash. smile.gif
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-2024 Invision Power Services, Inc.