err non e' globale, ma locale a checkData()

comunque l' errore e' molto comune per chi si avvicina ad ajax:
dimenticarsi che l' interazione asincrona comporta ritardi,
ritardi cha fanno comunque esaurire la funzione

quando esegui updatepage() checkData ha finito da tempo il suo compito e ritornato il valore di err al momento (sicuramente false, come all' inizializzazione)
che err cambi valore in un secondo tempo e' irrilevante per checkData

rivedi la logica della tua applicazione
ciao