El problema puede estar por acá:
Código PHP:
var factura=$('factura').value;
Imagino que $ debe ser un alias de document.getElementById, y si esto es así, te convendría no tener una variable con el mismo nombre del id, ya que eso en Explorer te generará un error seguro (para Explorer el id en si mismo es un objeto y podés comprobarlo haciendo un alert(typeof cualquierId)) y en el resto de los navegadores probablemente también genere problemas.
Edito: Acabo de ver que tenés el send dentro del onreadystatechange, por lo tanto, nunca enviás la petición !!!!