Эта проблема не может быть решена осмысленно без использования AJAX. Другими словами, вам нужно, чтобы AJAX показывал «загрузочное» изображение, пока ответ на отправку формы обрабатывается сервером.
Если я вас правильно понимаю, то у вас есть форма:
<form action="search.php" method="post">
...
</form>
И он обрабатывается как обычная форма HTML. Данные передаются страницей на сервер, который использует PHP для их обработки. Без AJAX у вас нет хорошего способа узнать, когда ответ формы, результаты поиска готовы.
Обычно выполняется отправка формы на сервер с использованием AJAX. Форма обрабатывается сервером (PHP делает свое дело). В течение этого времени отображается «поисковое» изображение. Затем, когда сервер отвечает, изображение удаляется и отображаются результаты поиска.
Используя jQuery и AJAX на странице, это можно сделать так:
// The form has an id of "theForm".
// This function defines what happens when it is submitted.
$('#theForm').submit(function() {
// Replace the form w the search icon.
$("#theForm").html('Searching...<br/>' +
'<img src="http://i.stack.imgur.com/ZK0sq.gif" />');
// Make the search request to the PHP page.
// The 3 arguments are:
// 1 - The url. 2 - the data sent
// 3 - The function called when data is sent back
$.post("/ajax_html_echo/", $(this).serialize(), function(result){
// Here we replace the search image with the data
$("#page").html(response);
});
// Cancel the regular submission of the form.
// You have to do this, or the page will change and things won't work.
return false;
});
Хорошая вещь в вышеприведенном - это то, что он хорошо ухудшается, если JS выключен, поскольку у вас все еще есть обычная форма HTML и ее обычная функция отправки, и если JS включен, то он блокирует эту обычную функцию return false
и использует AJAX.
Используемый запрос:
.submit ()
.html ()
.post ()
.serialize ()