Witam,
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:
$this->addElement('file', 'uploadFile', array( 'destination' => 'uploads/',
// array('size', false, 6553600000),
),
'label' => APPLICATION_PATH.'/uploads'
));
$this->addElement('submit', 'submit', array( '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';
$messages = implode('<br />', $uploadForm->uploadFile->getMessages()); $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')) {
<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:
$(document).ready(function() {
// 1.
var iFrame = $('
<iframe name="uploadFrame" id="uploadFrame" src=""></iframe>');
$('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', '');
}
});
<h1>Wysyłanie plików przy użyciu Zend_Form i jQuery - Przykład 1
</h1> <?= $this->information ?>
<?= $this->uploadForm ?>
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.");