Somehow I just realized that the Ajax result contains form tag. This bring back old memories, I experienced similar problem long time ago. I ensured that this was the problem via googling.
The solution is creating other element (I use div), and populate the Ajax result inside that new element, then attach the newly created element to existing container.
var div = document.createElement('div'); div.innerHTML = ajaxResult; divParent.appendChild(div);
While the solution is really simple, this is enough to annoy me.