Tengo un atributo de datos que se completa con una variable php. La variable php es un valor numérico.
<?php $userId = 123; ?> <div class="agent-detail-info" data-id="<?= $userId ?>"></div>Estoy tratando de obtener el valor del conjunto de datos y pasarlo a un parámetro de URL de obtención. Puse esto en su propia función para window.onload ya que php imprime el html dinámicamente.
function userData() { let infoWrap = document.querySelector(".agent-detail-info").dataset.id; console.log(infoWrap); return infoWrap; } window.onload = userData; const request = new XMLHttpRequest(); request.open( "GET", `url&usertolookup=${userData()}` );Console.log(infoWrap) devuelve el valor correcto en la consola, pero la consola muestra un error y no completa los parámetros de obtención
TypeError no capturado: no se pueden leer las propiedades de nulo (leyendo 'conjunto de datos') en userData
Estoy pensando que esto está sucediendo porque la solicitud se ejecuta antes de que se llame a la función userData y el DOM aún no está poblado.
Esto funciona:
function userData() { let infoWrap = 123; return infoWrap; }Intenté envolver la solicitud en una función que se ejecuta después de cargar el DOM, pero esto tampoco funcionó.
Debe ejecutar el código al final desde window.onload , para que se ejecute después de agregar el .agent-detail-info al DOM. Ejecutar userData() en sí mismo no hace nada.
window.onload = () => { const request = new XMLHttpRequest(); request.open( "GET", `url&usertolookup=${userData()}` ); };