Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Przesłanie zmiennej JS za pomocą GET w linku
Forum PHP.pl > Forum > Przedszkole
divril
Witam

Od paru godzin przegladam watki an temat przesyłania danych pomiedzy JS a PHP i wiem juz, ze trzeba do tego uzywac AJAXA, gdyz oba jezyki wykonuja sie w rooznym "cyklu" ladownaia strony.

Przedstawie wpierw swoj problem:

Mam strone, na ktorej generuje X linkow <a> o id 1,2,3, itd itp. oraz parametrze name= $tabela (jest to drugi aprametr, wspolny dla wygenerowanych linkow, zalozmy ze $tabela='tabela' :

  1. for ($i=1; $i<=$il_stron; $i++) {
  2.  
  3. echo "<a id='".$i."' name='".$tabela."'>".$i."</a>&nbsp;&nbsp;"; //stworz linki do podstron
  4.  
  5. }


nastepnie w pliku js:

  1. $('a#1').click(function(){
  2. var type=$(this).attr('name');


pobieram sobie wartosc tego atrybutu i otrzymuje zmienna js type='tabela'. (kod js nie jest zakonczony, nie wklejalem calosci, ten fragment dziala)

CHcialbym teraz przekazac ta zmienna 'type' w adresie strony:

  1. $('div#pages').load( 'page.php?nr=1');


oprocz zmiennej 'nr' chcialbym tez aby page.php otrzymala do pobrania za pomoca metody GET ta wlasnie zmienna var type='tabela', nie wiem jak to zrobic, probowalem:

'page.php?nr=1&type='+type

Mam nadzieje ze dosc skladnie opisalem moj problem...
redeemer
Zainstaluj narzędzie Firebug. W konsoli zobaczysz szczegóły ajaxowego requestu.

PS. Zamiast $('a#NUM').click() dodałbym atrybut class na znacznik a i złapał od razu wszystkie za pomocą $('.nazwaKlasy')
divril
No tak, ale jesli zlapie wszystkie zlapie na raz to wszystkie beda przekazywac mi ten sam nr storny.
Zobacze co to ten FireBug ale chodzi mi tu o uzyskanie odpowiedzi, czy wogole takie przekazanie w linku zmiennej z js jest mozliwe
mortus
Najpierw formalności. Według specyfikacji (X)HTML wartość atrybutu id elementu HTML nie może rozpoczynać się cyfrą. A teraz przykład:
  1. <ul>
  2. <li><a href="#" id="page_1" name="tabela" class="link_to_page">Page 1</a></li>
  3. <li><a href="#" id="page_2" name="tabela" class="link_to_page">Page 2</a></li>
  4. <li><a href="#" id="page_3" name="tabela" class="link_to_page">Page 3</a></li>
  5. </ul>

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. $('a.link_to_page').click(function() {
  3. var page_number = $(this).attr('id').substring(5, 6);
  4. var page_type = $(this).attr('name');
  5. var url = 'page.php';
  6. var get_data = 'nr=' + page_number + '&type=' + page_type;
  7. $.load(url, get_data, function(data) {
  8. // zmienna data zawiera odpowiedź serwera
  9. });
  10. });
  11. });
[JAVASCRIPT] pobierz, plaintext
divril
Ok, dzieki, teraz rozumiem o co chodzilo z klasami + dzieki za ustematyzowanie wiadomosci z nazwami id smile.gif

Tylko ze co ja dostane w tej funkcji 'odpowiedz serwera' ? ja musze na stronie 'page.php' pobrać ta daną:

$tabela=$_GET['tabela']

Jak tylko wroce do wlasnego laptopa to sprawdze skrypt, moze to bylo niepotrzebne i glupie pytanie i wystarczy juz odebrać na 'page.php' ta zmienna:)
mortus
Odpowiedzią serwera będze to, co wygeneruje skrypt page.php na podstawie ziennych z $_GET. To co w tej sytuacji zwróci skrypt page.php zależy od Ciebie, może to być np. cała strona (tyle, że wtedy mija się to z celem) albo dane pobrane z bazy i przetworzone na odpowiedni HTML, dane w formacie JSON, czy też XML. To Twoim zadaniem jest oprogramowanie tego. Normalnie odpowiedzią serwera będzie to, co pojawia się w przeglądarce po wpisaniu przykładowo takiego adresu:
http://moja.strona.pl/page.php?nr=1&type=tabela
divril
A to dokladnie o to mi chodzi:) Aby dokladnie taki link pojawil sie w przegaldarce:) Wielkie dzieki za pomoc, zaraz zabieram sie do testow:)

~mortus:

Wielkie dzięki, o taki dokładnie efekt mi chodziło:) rozumiem juz teraz o co chodziło w tej linijce

  1. $.load(url, get_data, function(data) {


Jeszcze raz dzieki!
mortus
Linię 3 z kodu JS, który wcześniej podałem musisz zamienić na:
[JAVASCRIPT] pobierz, plaintext
  1. var page_number = $(this).attr('id').substring(5);
[JAVASCRIPT] pobierz, plaintext

Inaczej skrypt będzie działał tylko dla 10 stron od 0-9. Chciałem to wyedytować wcześniej, ale wykrzaczyło mi tamtą odpowiedź.
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.