Ciao, probabilmente perchè l'each di jQuery a differenza di come può sembrare funziona un po' come una cosa asyncrona. Pertanto è probabile che la chaiamata in ajax venga eseguita prima della fine dell'each.
Prova e mettere un console log nel each, e uno magari nel beforeSend di ajax. Dovresti notare quanto detto.
Quindi o usi un for classico al posto dell'each o devi inviare ajax dopo la fine del ciclo.