jQuery.ajax() - załadowany content, nie uruchamia skryptów

Witam!

Piszę obecnie pracę magisterską i już od paru dni jestem w ciemnej du*.... Sytuacja jest taka.

Mam coś w stylu panelu administracyjnego, w którym jest część strony odpowiedzialna za wyświetlanie zawartości wybrnego menu (#content) w AJAX (jQuery.ajax())

Każde menu wymaga jakiegoś tam skryptu w JS, którego łąduje dopiero podczas kiedy użytkownik wybierze odpowiednią pozycję w menu.

Kiedy $.ajax() wykonuje zapytanie do skryptu php, który generuje dynamicznie zawartość pobieraną z bazy danych wszystko jest ok - skrypty te są uruchamiane, ale kiedy wykonuje zapytanie do skryptu, który nie pobiera danych z bazy skrypty startowe się nie uruchamiaja :(

Dodam, że uruchamiają się one tylko za pierwszysmi dwoma razami (tzn jak klikne w pozycje menu i dwa razy załaduje się #content), a za trzecim i wyżej już nie...

W $.ajax() atrybut cache jest ustawiony na false, przejrzałem dokumentacje jQuery i pobawiłem się atrybutami ale nic to nie dało :/

Żadnych błędów nie znalazłem w działąniu JS (sprawdzałem konsolą w FF, Opera, i z Firebug)

Mam nadzieje ze ktos zrozumie o co mi chodzi, jest juz pozno a ja jestem na max'a zniszczony przez ten problem :/

Dodaje linka do wątku w DaniWeb, gdzie ktoś miał ten sam problem: javascript in ajax part of site doesn't work

2 lata temu | edytowane przez: raphpl 13371727

  • No i sam sobie odpowiem :)

    Znalazłem rozwiązanie (jak zwykle bardzo proste) ale bardzo prymitywne które tak naprawde nie rozwiązuje problemu ale powoduje, że skrypty się uruchamiają...

    A do każdego #content dodaje timestamp... i tyle. Serwer wtedy daje mi zawsze inną odpowiedź i skrypty są uruchamiane...

    To jest raczej ominięcie problemu a nie rozwiązanie, także jakby ktoś coś wiedział proszę o OŁ DI PI (odp) :P

  • Blockquote A do każdego #content dodaje timestamp... i tyle. Serwer wtedy daje mi zawsze inną odpowiedź i skrypty są uruchamiane... Blockquote

    Dokładnie możesz napisać co robiłeś?

    jak mam <div id="zawartosc"> </div>

    a skrypt z jQuery :

    function loadkolekcja(id)
    {
    $.ajax({
       type: "GET",
       url: "przeglad.php",
       data: "kolekcja_id="+ id,
       success: function(html){
        $("#zawartosc").html(html);
      }
     });
    }
    

    to jak wysyłałes timestamp w tym?

  • po stronie klienta nie wysyłam timestamp, timestamp doklejam do generowanej odpowiedzi przez serwer, widze ze tutaj ladujesz do #zawartosc zwrocony kod html, ja mialem podobnie, po stronie serwera uzywalem PHP i na koncu generowanej odpowiedzi dodalem wartosc funkcji time();

    a rozwiazaniem problemu bylo wylaczenie cache'owania w CodeIgniter...

  • Hmm nie za bardzo wiem, jak wyłączyć "te" cache'owanie...

    a co do dodawania tej wartości funkcji time(); no niestety nie idzie to lub też źle to robię.

Zaloguj się, aby dodać swoją odpowiedź