wyświetlanie fancybox po odświeŻeniu javascript

0

Witam,
mam taki problem na którym utknąłem już kilka dni...
mam plik

json.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
<link rel="stylesheet" href="jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />
<script type="text/javascript">
$(document).ready(function() {
$('a.fancy').fancybox({
                'transitionIn'  :       'elastic',
                'transitionOut' :       'elastic',
                'speedIn'               :       600, 
                'speedOut'              :       200, 
                'overlayShow'   : true,
                'autoScale' : true,
                'titleShow' : true,
                'titlePosition' : 'over',
                'hideOnContentClick' : true,
                'width' : 1000,
                'height' : 500
                });
        
});
</script>
</head> 
<body> 

<?
require 'db.php';
$query = "SELECT id_zdjecie, nazwa_zdjecie, opis_zdjecie, link_zdjecie FROM galeria ORDER BY Rand() LIMIT 6";
$result = mysql_query($query) or die(mysql_error($mysqli));
if ($result) {
	echo "
<ul id='galeria'>";
	while ($row = mysql_fetch_object($result)) {
		$nazwa = $row->nazwa_zdjecie;
		$opis = $row->opis_zdjecie;
		$link = $row->link_zdjecie;
		$id = $row->id_zdjecie;
		echo "
<li><a href='$link' title='$nazwa' class='fancy'><img src='$link' alt='$title' /></a>
<h4>$nazwa</h4>
 
<h1>$opis</h1>
</li>\n";
	}
	echo "</ul>";
	}
?>

</body>

który wczytuje dane z bazy i przygotowuje je do wyświtelenia
i plik

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<link href="styl.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
	function odswiezZdjecia() {
	   $("#galeria").fadeOut(1300, function() {
			$("#galeria").empty
			$("#galeria").load("json.php", function() {
				$("#galeria").fadeIn(1300);
			});
		});
	};
	$(function(){
		odswiezZdjecia();
		var int = setInterval("odswiezZdjecia()", 9500);
	});
</script> 
</head> 
<body> 




<div id="box">
<div id="galeria">
</div>
</div>

</body>

który te dane wyświetla...

Problem polega na tym że kiedy w index.php zdjęcia wyświetlane są po raz pierwszy, bez problemu po kliknięciu w miniaturkę otwiera się duże zdjęcie za pomocą fancybox...
ale po przeładowaniu już fancybox przestaje działać i po kliknięciu na miniaturkę nic się nie dzieje. Po odświeżeniu całej strony sytuacja się powtarza itd...

bezpośrednio w pliku json.php fancybox jest wywoływane na wszystkich plikach więc chyba problem leży gdzieś w index.php, ale nie jestem tego pewien więc jeśli ktoś ma jakiś pomysł i może pomóc to byłbym wdzięczny :)

1

Daj po

$(document).ready(function() {

takie coś

alert("test");

w pliku json.php

I zobaczysz, czy drugi raz się wykonuje kod js z tego pliku. Jeśli nie wywołuje się komunikat, zobacz konsole -> masz błąd.

A tak poza tym, to co teraz robisz jest niemoralne.
Ładujesz całą stronę z nagłówkami, sekcjami head, html do div'a. Za każdym odświeżeniem, dołączasz do strony jquery-1.4.2.min.js, jquery.fancybox-1.3.4.pack.js, jquery.fancybox-1.3.4.css - ciągle przeładowywujesz plugin fancybox. Zobacz na konsole, pewnie ci za 2 odświeżeniem zdjęć wywala błąd.

Nie znasz się też na przeznaczeniu JSON. Nazywasz tak plik, chociaż nie wiesz na czym JSON polega.

To co teraz masz, chętnie bym wyrzucił do kosza, i zrobił od nowa. Jak?
Zacznijmy od tego żeby zmienić nazwę pliku json.php na cokolwiek innego - bo to myli. Powiedzmy że nowa nazwa pliku to "gallery.php". W tym pliku generujesz kod html, bez tagów head/html/body, zostawiasz tylko to co masz w pętli. To wszystko co do tego pliku.

W index.php ładujesz plugin fancybox. Ładujesz też zawartość z pliku gallery.php do twojego div'a. Gdy ajax skończy pracę, wywołujesz :

$('a.fancy').fancybox({
                'transitionIn'  :       'elastic',
                'transitionOut' :       'elastic',
                'speedIn'               :       600, 
                'speedOut'              :       200, 
                'overlayShow'   : true,
                'autoScale' : true,
                'titleShow' : true,
                'titlePosition' : 'over',
                'hideOnContentClick' : true,
                'width' : 1000,
                'height' : 500
                });
 
});

Całość pliku index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<link href="styl.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
<link rel="stylesheet" href="jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />
<script type="text/javascript">
        function odswiezZdjecia() {
           $("#galeria").fadeOut(1300, function() {
                        $("#galeria").empty
                        $("#galeria").load("gallery.php", function() {
						$('#galeria a.fancy').fancybox({
										'transitionIn'  :       'elastic',
										'transitionOut' :       'elastic',
										'speedIn'               :       600, 
										'speedOut'              :       200, 
										'overlayShow'   : true,
										'autoScale' : true,
										'titleShow' : true,
										'titlePosition' : 'over',
										'hideOnContentClick' : true,
										'width' : 1000,
										'height' : 500
										});
                                $("#galeria").fadeIn(1300);
                        });
                });
        };
        $(function(){
                odswiezZdjecia();
                var int = setInterval("odswiezZdjecia()", 9500);
        });
</script> 
</head> 
<body> 
 
 
 
 
<div id="box">
<div id="galeria">
</div>
</div>
 
</body>

1 użytkowników online, w tym zalogowanych: 0, gości: 1