Grupa
MagazynyInternetowe.pl
Witryna z menu, które nie przeładowuje strony, wymaga przygotowania każdej podstrony w dwóch wersjach: pełnej i okrojonej. Strona w wersji okrojonej zawiera przedrostek fragment-. Jeśli na przykład witryna zawiera dwie opcje menu, które mają ładować pliki abba.html oraz ac_dc.html, to należy przygotować cztery pliki:
1. abba.html 2. fragment-abba.html 3. ac_dc.html 4. fragment-ac_dc.html
W menu witryny, w atrybutach href stosujemy nazwy pełnych stron (tj. bez przedrostka fragment-):. Dzięki temu witryna będzie działała po wyłączeniu JavaScriptu:
1. <ol> 2. <li><a href="abba.html">ABBA</a></li> 3. <li><a href="a_dc.html">AC DC</a></li> 4. ... 5. </ol> 6. <div id="content">
W powyższym kodzie ujawnia się cały urok rozwiązania stosującego jQuery. Jest to bowiem zwykłe menu, jakie byśmy przygotowali wykonując statyczne pliki HTML.
Modyfikację hiperłączy menu w takie, które nie przeładowują strony zapewnia kod zawarty w pliku menu.js (plik ten należy oczywiście dołączyć do każdej pełnej podstrony):
1. $(document).ready(function(){ 2. $('a').click(function(){ 3. $('#content').load( 4. 'fragment-' + $(this).attr('href') 5. ); 6. return false; 7. }); 8. });
Kolejno:
$('a'), onclick,onclick do elementu posiadającego identyfikator #content ładujemy zewnętrzny plik,href klikniętego hiperłącza this przez dodanie prefiksu fragment-,return false).Wyszukiwarka ajaksowa, której użycie nie przeładowuje strony wykorzystuje formularz oraz element #wyniki:
1. <form action="index.php" method="get"> 2. <input id="sz" name="szukaj" /> 3. <input type="submit" value="szukaj" /> 4. </form> 5. <div id="wyniki"></div>
Działanie wyszukiwarki definiuje następujący kod JavaScript:
1. $(document).ready(function(){ 2. $('#wyniki').hide(); 3. $('form').submit(function(){ 4. $('#wyniki').load('server.php?co=' + $('#sz').attr('value')); 5. $('#wyniki').show(); 6. return false; 7. }); 8. });
Kolejno:
#wyniki (metoda hide()),onsubmit elementu form,#wyniki (metoda load()) i pokazaniu elementu #wyniki (metoda show()),sever.php?co= tekstu wprowadzonego w formularzu do elementu o identyfikatorze #sz,return false zakazuje przeładowania strony.Wykorzystując odwołania kaskadowe, obsługę zdarzenia onsubmit można zakodować następująco:
$('#wyniki').load('server.php?co=' + $('#sz').attr('value')).show();
Podana wyszukiwarka, podobnie jak opisane wcześniej menu, działa także po wyłączeniu obsługi JavaScript.
Powiązane publikacje
Komentarzy: 5
Mała sugestia dotycząca tego menu ajaxowego:
zamiast przygotowywać 4 pliki:
1. abba.html
2. fragment-abba.html
3. ac_dc.html
4. fragment-ac_dc.html
a podczas ładowania treści dołączać do adresu słowo fragment:
3. $('#content').load(
4. 'fragment-' + $(this).attr('href')
5. );
wystarczy mieć 2 strony(abba.html, ac_dc.html), w których żądana treść będzie w odpowiednim znaczniku (np. div z jakimś id, np. "tresc").
Wtedy w funkcji load można podać jaki znacznik ma być odczytany(nie trzeba ładować całej strony, można fragmenty):
3. $('#content').load(
4. $(this).attr('href')+" div#tresc"
5. );
Swietny tutorialik, po przeczytaniu od razu zabralem sie za pisanie kodu, lecz natknelem sie na dosc ciekawy problem i nie mam pojecia dlaczego to tak dziala, a wlasciwie nie dziala
mamy plik d.html
<html>
<head>
<title>Przykład 1-1</title>
<script type="text/javascript" src="./JQ.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#111 .b').click(function(){
$('#111').load('z.html');
});
$('#222 .c').click(function(){
alert('cos tam');
});
});
</script>
</head>
<body>
<p id="111">
<a class="b">klasa b</a>
</p>
<p id="222">
<a class="c">klasa c</a>
</p>
</body>
</html>
oraz plik z.html
<p id="222"><a class="c">klasa c</a></p>
Dlaczego po wczytaniu z.html do <p id="1111"> , wpisany tag nie jest obslugiwany przez jQuery?
W pliku glownym jest identyczny tag jak z pliku z.html i jest on caly czas obslugiwany przez jQuery.
Nie wiedziałem jak się skontaktować, dlatego piszę tutaj... Panie Włodzimierzu, informuję że od kilku tygodni na gajdaw.pl nie działają css-y i obrazki... URL-e z kodu strony zwracają Access Forbidden + 404.
Serdecznie pozdrawiam i dziękuję za pańskie świetne artykuły.
Artykuły tego autora:
Wykorzystanie technologii AJAX niesie wiele korzyści. Oferuje on znacznie więcej niż zwijane menu i ładowane na bieżąco zdjęcia. Bardzo ważne jest asynchroniczne przesyłanie informacji i nowe sposoby w podejściu do usług online.
Polecamy:
Na skróty:
Magazyny Internetowe| Co za ile| Programy| Praca| Magazyn Internet| Internet Maker| Web Toster| ForumNasze serwisy: