Hola Cristina:
AJAX crea respuestas asíncronas para la petición que tú le mandes hacer. No puedes colocar una sentencia AJAX para hallar un valor de
true/false y después crear un condicional dependiendo de lo que se haya hallado (creo que eso es lo que has hecho con
exists) directamente debajo de la llamada AJAX, ya que la sentencia se ejecutará antes de conocer el valor de
exists.
Lo que quiero decir es que si vas a jugar con una variable
exists que se tiene que determinar mediante un proceso AJAX, ese valor tardará cierto tiempo en llegar. En tu caso el condicional se ejecuta antes de saber si
exists es true o false, por eso es por lo que creo que nunca te selecciona nada.
La solución pasaría por crear ese condicional dentro de la función que maneja el evento
onreadystatechange. No sé si te baila entonces el
concepto de AJAX.
Para tu cuestión 3 debes definirte más. Quieres comparar cada elemento con el siguiente, ¿con qué finalidad? ¿Qué quieres hacer con el último elemento? ¿con quién lo quieres comparar? Está claro entonces que ese
i+1 debe sustituirse por otra cosa que funcione (probablemente debamos hallar el valor de i+1 bajo un condicional tipo
if(i+1 < data.listSize) o algo por el estilo).
Saludos.