Witam, po napisaniu prostego kodu do obsługi menu, tzn dodawanie nowych pozycji menu i treści do bazy i wczytywanie na strone. Wszystko elegancko dziala jednak problem zaczyna sie po dodaniu jQuery, wczesniej mialem statyczne menu a zawartosc byla pobierana z plikow, jednak promotorkowi jest malo...Podczas wybrania ktoregos z linkow do tresci strony jest wczytywana strona glowna zamiast zawartosc pobrana z bazy. Skrypty:

- zapytanie do bazy
  1. $query = mysql_query("SELECT * FROM `menu`");
  2. while ($menu = mysql_fetch_row($query))
  3. {
  4. echo '<ul id="header"><li><img src="img/kreska.jpg" /><a href="?id='.$menu[0].'">'.$menu[1].'</a><img src="img/kreska.jpg" />';
  5. echo '</ul>';
  6. }

- wyswietlanie
  1. $gecior = $_GET[id];
  2. if (isset($gecior))
  3. {
  4. $zapytanie = mysql_query("SELECT * FROM `menu` where `id_menu`='$gecior'")
  5. or die ("Wystapil blad: ". mysql_error());
  6.  
  7. $pokaz = mysql_fetch_row($zapytanie);
  8. echo $pokaz[2];
  9. echo '<form method="post" action="linki/edit.php" id="edycja">
  10. <label><textarea name="edytuj">'.$pokaz[2].'</textarea></label>
  11. <input type="submit" value="Wyślij" />
  12. </form>';
  13. }

- no i skrypt jQuery obslugujacy zmiane stron
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(
  2. function ()
  3. {
  4. $('ul#header li a, ul.slide li a, .l_menu_slide li a').live('click', function() {
  5. $('#content').slideUp('fast');
  6. $('ul#header .link').removeClass('link');
  7. $(this).parent().addClass('link');
  8.  
  9. $.ajax({
  10. type: "GET",
  11. url: $(this).attr('href'),
  12. data: "html",
  13. beforeSend: function(){
  14. $('#loading').fadeIn('fast');
  15. },
  16. error: function() {
  17. alert("Wystapil blad. \n\ Sprobuj ponownie.");
  18. },
  19. timeout: 9000,
  20. complete: function(){
  21. $('#loading').fadeOut(900);},
  22. success: function(data) {
  23. $('#content').html(data);
  24. $('#content').slideDown(900);
  25. }
  26. });
  27. return false;
  28. });
  29. });
[JAVASCRIPT] pobierz, plaintext


Dla mnie jest juz tego za wiele;/
Dodam, że mam podpięty pod każdą stron edytor TinyMCE(dodalem kod w wyswietlaniu - php), z którym jak sądze będzie pewnie problem (jesli wyjasni sie ta sprawa) z wyswietlaniem go na ajaxowo wczytwanych stronach, tzn pewnie go po porostu nie bedzie.

Wiem ze CKeditor mial cos takiego ze po kliknieciu "create editor: byl tworzony edytor ale zrezygnowalem z niego bo nie umialem dzialala mi funkcja "fullPage" i usuwalo wszystko razem z edytorem, chociaz teraz mam pobieranie z bazy stron a sam formularz jest wczytywany przez php wiec moze jesce wroce do CKeditora jesli TinyMCE nie wypali.

Najlepiej bylo by sobie darowac asynchroniczne wyczytywanie stron ale niestety jest to taki wymog mojego promotora.
Istnieje mozliwosc zeby zastosowac plugin jQuery"LiveQuery", czyli w zalozeniu mialo by byc: $(document).ready(function(){ $("jakis_selektor").livequery('click', function(){ show().editorTinyMCE...winksmiley.jpg

Ok dalem w ajaksie cos takiego i utworzylem nowy plik php do ktorego wrzucilem wyswietlanie, jednak teraz nie pobiera mi zmiennej $gecior, dopiero po wpisaniu np.
  1. $zapytanie = mysql_query("SELECT * FROM `menu` where `id_menu`='$gecior'")
wyswietla mi tresc, jak sie mozna odwalac do zmiennej $gecior ktora jest w pliku glownym?
[JAVASCRIPT] pobierz, plaintext
  1. $(this).parent().addClass('link');
  2. $.ajax({
  3. type: "GET",
  4. url: "linki/strony.php",
  5. data: ({id : this.getAttribute('id')}),
  6. dataType: "html",
[JAVASCRIPT] pobierz, plaintext


Sprawdzilem pod samym php bez ajaxa no i zmienna jest pobierane i tresc jest dobrze wyswietlana, ale po dodaniu ajaxa i dopisaniu na koncu: echo ''.$gecior.''; wyswietla "null".
Nie wiem juz czy problem lezy po stronie php czy po stronie ajaxa...nikt nie pomoze?sad.gif

Nie da sie juz edytowac, chyba za długi post...Wiem czemu jest problem z przekazaniem zmiennej, poniewaz przekazujac ja GETem (jest ona w adresie), ajax jej nie widzi poniewaz jak wiadomo wykorzystujac ajaxa adres sie nie zmienia, probowalem wyslac to POSTem, za pomoca przyciskow submit ale znowu cos nie halo, poniewaz jak dam w skrypcie: livequery('submit'..to wtedy strony sa zmieniane za pomoca samego php bez ajaxa..;/

OK, juz sobie poradzilem za pomoca submitów, tylko tak sie dalo wyslac zmienna post ktora odbiera ajax...takze mozna usunac ten temat.