Porque cuando la respuesta obtenida en la petición asíncrona es XML,
ajax.responseText
debe cambiar a
ajax.responseXML
.
Para evitar conflictos con lo que ya tienes hecho, usaría un sexto argumento en la función
OrdenarPor()
y una condición para determinar si se leerá la respuesta por
ajax.responseText
o
ajax.responseXML
. E incluso por
JSON.parse(ajax.responseText)
si fuera JSON.