У меня простая форма:
<form id="uploadform" action="" method="post" enctype="multipart/form-data">
<input type="file" class="file_up" name="Filedata[]" />
<input type="submit" id="send" name="uploadenFormSend" value="Bestand(en) uploaden" class="button-pink">
</form>
Когда форма отправляется, запускается скрипт php на той же странице. (нет JS или JQuery) Мне нравится делать следующее:
Когда запускается php-скрипт, должен быть показан DIV с идентификатором "прогресс". В конце op скрипт php он должен скрывать DIV.
Могу ли я сделать это с помощью JS или jQuery?
Я стараюсь:
В верхней части скрипта PHP:
echo '<script>
document.getElementById("uploadStatus").style.display = "";
</script>';
В конце скрипта php:
echo '<script>
document.getElementById("uploadStatus").style.display = "none";
</script>';
К сожалению, это не работает. Может кто-нибудь мне помочь?
Я думаю, вы хотите отправить без перезагрузки страницы. В случае, если я прав, вы можете использовать Ajax. Вот возможное решение с помощью jQuery (еще не проверено):
<script>
$(function () {
$('form').submit(function (e) {
e.preventDefault(); // prevent page reload
$('#uploadStatus').show();
$.post(
$(this).attr('action'),
$(this).serialize(),
function () {
$('#uploadStatus').hide();
}
);
});
});
</script>
PHP-скрипт, который извлекает данные, должен быть в отдельном файле, например:
<form action="path/to/submit.php" ...
Самое важное, что вам нужно иметь в виду, это то, что PHP - это серверная сторона, а javascript/JQuery - клиентская. Весь PHP-код работает до того, как он достигнет вашего браузера. Javascript/JQuery все работает в вашем браузере. Когда вы используете кнопку отправки, вы отправляете запрос на сервер для новой страницы.
С учетом сказанного у вас есть 2 варианта:
Просто покажите свой прогресс div на submit:
$( document ).ready(function() {
$('form').submit(function (e) {
$('#uploadStatus').show();
});
});
Это покажет индикатор выполнения, ожидая, пока сервер завершит запрос и вернет его для новой загрузки страницы.
Или вы можете сделать запрос ajax, как указано в @wared, который может быть или не быть больше, чем вы хотите получить.
В любом случае ваш прогресс div должен иметь стиль = "display: none" для начала.
Использование jQuery:
$( document ).ready(function() {
$("#uploadStatus").hide()
});
Просто убедитесь, что у вас есть ID, видимый по умолчанию.