posługując się tym tutorialem postanowiłem zrobić formularz w wysyłający pliki bez przeładowywania strony Zend Frameworku.
Tak więc gdy wybiorę sobie jakiś plik i kliknę na "Wyślij" to przycisk robi się "disabled" i pojawia się napis "Wysyłanie pliku - proszę czekać" i... tyle. Plik oczywiście jest kopiowany na serwer, ale w przeglądarce nic się nie dzieje

Tak wygląda mój formularz:
'destination' => 'uploads/', // array('size', false, 6553600000), ), 'label' => APPLICATION_PATH.'/uploads' )); 'label' => 'Wyslij' )); $this->setEnctype('multipart/form-data'); $this->setAttrib('id', 'uploadForm');
kotroler:
$uploadForm = new UploadForm(); $request = new Zend_Controller_Request_Http(); Zend_Registry::set('request', $request); if ($request->isPost()) { $uploadForm -> getValues(); if (!$uploadForm->isValid($request->getPost())) { // Próba walidacji formularza'; $information = 'Błąd podczas sprawdzania poprawności formularza.'; } elseif (!$uploadForm->uploadFile->isUploaded()) { // Czy cokolwiek zostało wysłane? $information = 'Nie wybrano pliku do wyslania.'; } elseif (!$uploadForm->uploadFile->receive()) { // Odbiór pliku $information = 'Blad podczas odbierania pliku.'; } else { // Sukces $information = 'Plik ' . $uploadForm->uploadFile->getFileName() . ' został poprawnie wyslany.'; } if ($request->getParam('asyncUpload')) { echo " <script type=\"text/javascript\"> window.parent.finishUpload(".$information."); </script> "; } } else { $information = 'Wyslij plik uzywajac ponizszego formularza:'; } $this->view->uploadForm = $uploadForm; $this->view->information = $information;
i widok:
<script> $(document).ready(function() { // 1. $('body').append(iFrame); // 2. $('#uploadForm').attr('target', 'uploadFrame'); // 3. $('#uploadForm').attr('action', '?asyncUpload=1'); // 4. $('#uploadForm').submit(function(){ $('#uploadForm #submit').attr('disabled', 'disabled'); $('#information').html('Wysyłanie pliku - proszę czekać'); return true; }); // 5. window.finishUpload = function(information){ alert('koniec'); $('#information').html(information); $('#uploadForm #submit').attr('disabled', ''); } }); </script> </head> <body> <div id="wrapper"> <div id="information"> <?= $this->information ?> </div> <?= $this->uploadForm ?> </div> </body> </html>
Z góry dzięki za pomoc.
A może ktoś zna jakiś dobry przykład takiego skryptu (niekoniecznie w ZF)?
Pozdrawiam

EDIT: problem rozwiązany, a przyczyna okazała się bardzo błaha:
w 2. listingu w 25. linijce zapomniałem dodać apostrofów, więc powinno być tak:
window.parent.finishUpload(".$information.");
