Допустим, существует на сайте форма, работает без ajax:
<form action="" id="test_form">...</form>
Чтобы она стала работать через ajax, надо на js повесить обработчик события submit, и прерывать в нем событие (методом return false;), вместо чего отправлять запрос средствами js.
Для простоты и кроссбраузерности можно подключить jquery.
Тогда появится такой код:
$(function(){ // DOM ready
$('#test_form').submit(function(){
$.post(
$(this).attr('action'), // url
$(this).serializeArray(), // data
function(answ) //callback
{
//...
},
'html' // answer type (html, text, json, ...)
);
return false;
});
});
Дальше уже дело фантазии. Я часто делаю полноценную noajax версию, потом на backend добавляю if (!$_REQUEST['ajax']) { ... } обертки вокруг блоков, которые при ajax отдавать не надо (для экономии передаваемого трафика).
Чтобы пользователь не спамил запросами на сервер можно ставить индикатор запроса и т.п.