El segundo parámetro de xhr.open es un string, con lo cual puede formarse de la forma que creas conveniente, por ejemplo:
'snapshot.php?dni=' + valor
Valor puede salir de dos lugares básicamente:
Del contenido del input correspondiente
Del php (si es que lo sabes de antemano)
Lo importante aquí es comprender que se trata de dos tiempos de ejecución diferentes.
Si lo haces en JavaScript el valor del DNI se conocerá recién cuando el cliente lo ejecute en su navegador.
Si lo haces en PHP el valor se conocerá al momento de generar el HTML que luego será enviado al cliente.
Eso significa que, si miras el código JS de tu sitio verás algo como:
'snapshot.php?dni=123456'