Na początku przedstawię problem. Skrypt w PHP "search_dir.php" zwraca mi jakąś wartość np.: ilość plików danego typu w katalogu, ilość katalogów, listę plików w tablicy w zależności od podanych parametrów i robi to dobrze. Problem jest z przetworzeniem tych danych pobieranych ajaxem. Funkcja getDir() pobiera dane, a następnie przekazuje w callback zmienną 'data' do funkcji 'galleries(). Tutaj pojawia się problem. Chcę dalej operować na zmiennej data, ale nie chcę tworzyć nowego pola obiektu window.
Tworzę nowy obiekt 'gal' klasy Gallery() i w pole gal.count chcę wstawić, to co zwrócił mi skrypt w PHP (np. w tym wypadku ilość katalogów). W tym momencie mam sprzeczne informacje co do tego, co zwraca mi funkcja galleries().
Kod
getDir('galeria');
alert(data);
alert(gal.count);
alert(data);
alert(gal.count);
w takiej postaci otrzymuję 2 alerty: [Object] i 4 ((4 to ilość katalogów w podanym katalogu)
w tej postaci
Kod
getDir('galeria');
//alert(data);
alert(gal.count);
//alert(data);
alert(gal.count);
otrzymuję jeden alert o pustej treści
w tej postaci
Kod
getDir('galeria');
alert(data);
//alert(gal.count);
alert(data);
//alert(gal.count);
otrzymuję alert o treści [object]
Tutaj mam pytanie. Czemu w drugim przypadku otrzymuję pusty alert, zamiast alert o treści 4. W jaki sposób zwrócić wartość funkcji galleries(), tak żebym mógł z tej wartości dalej korzystać. Dane zwracane przez skrypt PHP będą służyły do dynamicznego generowania galerii zdjęć na podstawie zawartości podanego katalogu.
Kompletny kod skryptu:
CODE
<script type="text/javascript">
//var data;
Gallery = function() {}
Gallery.prototype.name = ''
gal = new Gallery();
$(document).ready(function() {
function getDir(dir){
$.post('search_dir.php', {
'directory': dir,
'type': 'directory'
}, function(data){
galleries(data);
});
}
function getDirContent(dir){
$.post('search_dir.php', {
'directory': dir,
'type': 'directory',
'extension': 'jpg',
'list': 'true'
}, function(data){
//alert(data);
});
}
function galleries(data) {
gal.count = data;
};
getDir('galeria');
alert(data);
alert(gal.name);
});
//var data;
Gallery = function() {}
Gallery.prototype.name = ''
gal = new Gallery();
$(document).ready(function() {
function getDir(dir){
$.post('search_dir.php', {
'directory': dir,
'type': 'directory'
}, function(data){
galleries(data);
});
}
function getDirContent(dir){
$.post('search_dir.php', {
'directory': dir,
'type': 'directory',
'extension': 'jpg',
'list': 'true'
}, function(data){
//alert(data);
});
}
function galleries(data) {
gal.count = data;
};
getDir('galeria');
alert(data);
alert(gal.name);
});