Todo este código funciona. Activa el modal BS5 y lo llena con un registro utilizando un procedimiento almacenado en MySQL db. El problema era llamar a la variable incorrecta. Si configura una variable 'sincronizada', entonces 'esperar' tiene que usar la misma variable (mi error), o rompe la función 'promesa'. Además, tuve que jason_encode mi salida PHP PDO en una matriz separada para ese propósito, y useht 'data.json' para capturar la respuesta y nombrar las variables correctamente. Una vez organizado correctamente, funciona muy bien. Éxito con fetch-api. Ahora puedo hacer CRUD completo con fetch-api, php pdo, procedimientos almacenados y MySQL.
<?php include "init.php"; $P1 = $_GET['userId']; $stmt = $pdo->prepare("CALL readSingleUserSp(?)"); $stmt>bindParam(1,$P1,PDO:: PARAM_STR|PDO::PARAM_INPUT_OUTPUT|PDO::ATTR_EMULATE_PREPARES, 4000); $stmt->execute(array($P1)); do { $res = $stmt->fetchAll(); } while ($stmt->nextRowset() && $stmt->columnCount()); foreach ($res as $row) { $userId = $row['userId']; $fName = $row['fName']; $lName = $row['lName']; $email = $row['email']; $phone = $row['phone']; } $userinfo = array( 'userId'=>$userId, 'fName' =>$fName, 'lName' =>$lName, 'email' =>$email, 'phone' =>$phone); echo json_encode($userinfo); ?> const tbody = document.querySelector("tbody"); const addModal = document.getElementById("addNewUserModal"); const addForm = document.getElementById("add-user-form"); const updateForm = document.getElementById("edit-user-form"); // Edit User Ajax Request tbody.addEventListener("click", (e) => { if (e.target && e.target.matches("a.editLink")) { e.preventDefault(); let userId = e.target.getAttribute("userId"); editUser(userId); } }); `const editUser = async (userId) => { const data = await fetch(`includes/readsingleuser.php? &userId=${userId}`, { method: "GET", }); const userinfo = await data.json(); document.getElementById("userIdEdit").value = userinfo.userId; document.getElementById("fNameEdit").value = userinfo.fName; document.getElementById("lNameEdit").value = userinfo.lName; document.getElementById("emailEdit").value = userinfo.email; document.getElementById("phoneEdit").value = userinfo.phone; };"Todo este código funciona. Activa el modal BS5 y lo llena con un registro utilizando un procedimiento almacenado en MySQL db. El problema fue llamar a la variable incorrecta. Si configura una variable 'sincronizada', entonces 'esperar' tiene que usa la misma variable (mi error), o rompes la función 'promesa'. Además, tuve que Jason_codificar mi salida PHP PDO en una matriz separada para ese propósito, y usar 'data.json' para capturar la respuesta, y nombre las variables correctamente. Una vez organizado correctamente, funciona muy bien. Éxito con fetch-API. Ahora puedo hacer CRUD completo con fetch-API, PHP pdo, procedimientos almacenados y MySQL". Cambié el código original para acortar la pregunta ya que los bots de Stack se quejaban.