Hola:
Parece que usas html5... y aunque yo aún no lo he usado, supongo que no cambiaría nada.
En principio, haría que funcionase todo sin Ajax, así que pondría los name a los controles del formulario, de tal forma, si falla el envío por un error, se envía sin Ajax... y otra cosa que podría ser problemática es que las variables no parece que las "escapes":
dato = escape(dato);//...
Cuando tengo problemas, suelo generar la url, y enviarla con un window.open, para ver como llegan.
Saludos