request.send(params) нужно вынести за пределы функции обработчика
request.onreadystatechange = function()
{
...
}
request.send(params)
_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
request.onreadystatechange = function()
{
...
}
request.send(params)