Этот вопрос пробудил мое любопытство, когда я пытался сделать нечто подобное , используя решение iframe , предложенное Леоном.В конце концов мне это удалось, однако я хотел бы предложить, чтобы вместо прямого свойства onload
вы использовали jQuery .load()
событие в iframe.
Редактировать: Итак, вот как я настраивал форму (используя HTML5, поэтому кавычки не нужны):
<div id=message></div> /* Example-specific, see below */
<form method=post action=backend.php target=iframe>
// Form data here
</form>
<iframe name=iframe></iframe>
Я добавил следующий код CSS, чтобы скрыть iframe:
iframe {
border:0px;
height:0px;
visibility:hidden;
width:0px;
}
Не используйте display:none
, так как некоторые браузеры отказываются отправлять элемент, который не отображается.
Тогда в моем $(document).ready()
JavaScript ...
$('iframe').load(function(){
// Your load event here.
});
Вы также можете изменить это так, чтобы он специально запускался только после определенного события (например, если вы используете динамические формы).В таком случае вы можете использовать .unbind('load')
перед .load()
, чтобы предотвратить вызов ранее добавленных .load()
функций.
Теперь, когда форма отправлена, она загружается в скрытый iframe.Когда iframe загружает страницу (в моем примере это backend.php), он запускает функцию .load()
.В моем конкретном случае я настроил <div id=message>
для отображения сообщения:
$('iframe').load(function(){
$('#message').html('The form successfully submitted.');
});