Да, это так. Я хотел бы предложить немного Javascript (в следующем примере используется jQuery):
<script type="text/javascript">
// when the DOM is ready
$(document).ready(function() {
// bind some code to the form's onsubmit handler
$('form[name=theForm]').submit(function() {
if(formCheck(this)) {
// $.post makes a POST XHR request, the first parameter takes the form's
// specified action
$.post($("form[name=theForm]").attr('action'), function(resp) {
if(resp == '1') {
alert('Your form has been submitted');
} else {
alert('There was a problem submitting your form');
}
});
}
return false;
});
});
</script>
Возвращение false в конце описанного выше обработчика отправки не позволяет браузеру загружать действие формы (после URL) традиционным способом. Кроме того, если Javascript отсутствует, форма будет отправлена по старому стилю, поэтому, по существу, вы добавили уровень удобства использования над стандартной реализацией формы, который изящно ухудшается.
Я хотел бы отметить, что всегда полезно предоставить пользователю реалистичную обратную связь. Другими словами, публикация формы в формате AJAX может захватывать некоторые признаки этого с сервера. В приведенном выше примере я предположил, что «1» означает, что запись была успешно сохранена, а «0» означает, что она не была сохранено (запрос не выполнен и т. д.). Отображаемое пользователю сообщение зависит от этого результата.