Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: link obrazkowy i przekazanie zdarzenia onClick
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Dafidov
Witam.
Słabo u mnie z Ajaxem dlatego proszę o pomoc.
Mam oto taki problem: utworzyłem sobie dwa linki obrazkowe, które chciał bym obsłużyć w miejscu po kliknięciu w nie aby przekazały wartość, konkretnie chodzi mi o mechanizm przełączenia języka na stronie.
wiem że najlepszą metodą jest przeładowanie strony ajaxem i przekazanie zmiennej ale nie wiem jak to zrobić.

Próbowałem tak:

  1. <form name="change_language_form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  2.  
  3. <input name="lang" id="_lang" type="hidden" value="" />
  4.  
  5. <li style="cursor: pointer;" onClick="document.getElementById('_lang').value='en'; document.change_language_form.submit();">English</li>
  6.  
  7. <li style="cursor: pointer;" onClick="document.getElementById('_lang').value='pl'; document.change_language_form.submit();">Polski</li>
  8.  
  9. </form>

ale nie wiem czy brakuje mi jakiejś biblioteki jquery czy co bo po kliknięciu niestety firebug nie wykazuje żeby zmienna lang została zmieniona sad.gif

Obsługuje to przez posta:

  1. <?php
  2. if (isset($_POST['submit'])) {
  3. $lang= $_POST['lang'];
  4.  
  5.                // Rozpocznij sesję, zarejestruj wartości i przekieruj użytkownika.
  6.                session_name ('IDTwojejSesji');
  7.                ini_set ('session.use_cookies', 0);
  8.                session_start();
  9.                $_SESSION['lang'] = $lang;
  10. echo ' w post przed elsem lang z sesji jest na:'.$lang.'<br />';
  11. }
  12. else {
  13.  
  14. echo 'blada jakis <br />';
  15. ?>


Niestety mimo przeładownia strony zmienna nie jest zapisywana.

Proszę o radę pomoc jak to napisać żeby dało się po kliknięciu w linka przeładować stronę i przekazać zmienną do php.

Z góry dziękuje za wyrozumiałość i pomoc.
melkorm
o_O"

AJAX generalnie jest po to by NIE przeładowywać strony, ja tam zresztą nie widze AJAX'a.

Zrób to za pomoca linków ,
  1. <a href="?lang=en" />Obrazek</a>


I tak samo dla drugiego i po problemie , niepotrzebnie kombinujesz.

Oczywiście można z tym linkiem pokombinować by wróciło na strone na której się było pobierając url'a z tablicy $_SERVER.
Dafidov
Dziękuję za tak szybką odpowiedź.
Nie spodziewałem się wyłączyłem kompa.

Masz racje trochę może niepotrzebnie kombinuję. koniec końców nie posłuchałem Twojej rady żeby obsłużyć to GETem tylko poszedłem dalej w mój pomysł i obsłużyłem to zdarzenie POSTem tak jak powinno - wcześniej miałem błąd dlatego mi nie zczytywał tak wysłanej wartości lang

teraz działający kod wygląda mniej więcej tak:
(Formularz (w zasadzie dwie ikonki) jako linki zmieniające język)
  1. <div id="lang">
  2. <form name="change_language_form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  3. <input name="lang" id="_lang" type="hidden" value="" />
  4. <a id="polski" class="jezyk" href="#" title="Język Polski" onClick="document.getElementById('_lang').value='pl'; document.change_language_form.submit();" ><img src="/images/lang.gif" alt="Język Polski" /></a>
  5. <a id="english" class="jezyk" href="#" title="English Version" onClick="document.getElementById('_lang').value='en'; document.change_language_form.submit();"><img src="/images/lang.gif" alt="English Version" /></a><br />
  6. </form>
  7. </div>


Oraz przechwycenie, zapisanie do sesji i obsłużenie języka w php:

  1. <?php session_start();
  2. if (!isset($_SESSION['lang'])) {
  3.  
  4.    if (isset($_POST['lang'])) {
  5.        $lang= $_POST['lang'];
  6.        $_SESSION['lang']= $lang;
  7.    }
  8.    else {
  9.        $lang="pl";
  10.        $_SESSION['lang']= $lang;
  11.    }
  12. }
  13. else{
  14.        $lang=$_SESSION['lang'];
  15.        if (isset($_POST['lang'])) {
  16.        $lang= $_POST['lang'];
  17.        $_SESSION['lang']= $lang;
  18.        }
  19. }
  20.  
  21. ?>


I śmiga tak jak chciałem.
Dzięki za wsparcie.
Pozdrawiam serdecznie.
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.