Wydziabałem prosty uploader plików bez potrzeby przeładowywania strony. Zbudowany w ten sposób że na stronie mam iframe a w nim formularz do upload plików. Wszystko pięknie działa pliki się uploadują a ajax je sobie na akcję onload iframe pakuje do wskazanego diva. Chciałbym uzyskać dodatkowy efekt w postaci nałożenia diva na iframe w momencie kiedy wysyłany jest formularz np: z jakimś gifo-preloaderem. Macie jakiś pomysł ?
Próbwałem do formularza z iframe dołożyć zdarzenie na onsubmit - funkcję upploading(); która ukrywałaby diva id#uploader ale wywołanie funkcji z ramki mi nie działa. Pewnie gdyby kod js do ukrycia formularza podczas przesyłania plików umieścił w ramce a nie wpliku głównym to by zadziałało ale plik do którego się odwołuję czyli upload.php ma obsługiwać tylko żadania uploadu i wyświetlania formularza.
<form action="upload.php?mode=upload" enctype="multipart/form-data" method="post" onsubmit="upploading();"> <input type="file" name="plik"><input type="submit" value="upload">
kod strony głównej:
<meta http-equiv="Content-type" content="text/html; charset=utf-8"> <script type="text/javascript"> function requestAjax(){
var div = 'galery';
var url = 'upload.php?mode=dir';
new Ajax.Request(url,
{
method:'post',
requestHeaders: [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache'],
encoding: 'utf-8',
asynchronous: 'true',
onSuccess: function(transport) {
var response = transport.responseText;
$(div).innerHTML = response;
}
});
}
function upploading(){
document.getElementById('uploader').style.display = 'none';
}
#galery{ width:800px; height:300px; border: 1px solid #40CAFF; background-color: #DCDCDC; font-size:10px; }
<iframe onload="requestAjax();" src="upload.php?mode=form" style="width:500px; height:50px; border:none;" scrolling="no"></iframe>
plik upload.php
<?php
$mode = $_GET['mode'];
if( $mode == 'form' ){
echo'<form action="upload.php?mode=upload" enctype="multipart/form-data" method="post"> <input type="file" name="plik"><input type="submit" value="upload">
</form>';
}
if( $mode == 'upload' ){
}
echo'<form action="upload.php?mode=upload" enctype="multipart/form-data" method="post" onsubmit="upploading();"> <input type="file" name="plik"><input type="submit" value="upload">
</form>';
}
if( $mode == 'dir' ){
$dir = 'upload/';
while (($file = readdir($dh)) !== false) {
echo '<img src="'.$dir.'/'.$file.'" width="100" height="100" alt="">'; }
}
}
}
}
?>
Ten post edytował dado 23.03.2008, 07:56:12