0

Tengo que setear datos en un select de HTML con Javascript y PHP, y ya hice esto una vez, pero ahora que quiero hacer lo mismo no me está funcionando y no sé porqué, ya verifiqué que todo esté bien escrito, pero cuando en javascript imprimo lo que me retorna lo que me retorna el servidor, me sale en blanco.

Este es mi código del lado del cliente:

function resultado(){
$.ajax({
    url: './php/servidor.php',
    type: 'GET',
    data: {
        quest: 'resultados'
    },
    success: function(res){
        console.log(res);
            let lista = JSON.parse(res);
            let template = '';
            lista.forEach(lista => {
                template += `
                <option value="${lista.id}">${lista.nombre}</option>
                `
            });
            $("#resultado").html(template);
           
    }
});

}

La función si está siendo llamada al cargar la pagina.

Comparto el código del lado del servidor (PHP) en donde creo que hay problema:

if (isset($_GET)) {
if (isset($_GET["quest"])) {
    if ($_GET["quest"] == 'resultados') {
        $mysql_query = "SELECT * FROM resultado";
        $resultado = mysqli_query($con, $mysql_query);

        if (!$resultado) {
            die('el Query falló:' . mysqli_error($con));
        }

        if (mysqli_num_rows($resultado) > 0) {
            $json = array();
            while ($fila = mysqli_fetch_array($resultado)) {
                $json[] = array(
                    'idResultado' => $fila["idResultado"],
                    'nombre' => $fila["nombre"]
                );
            }
            $json_string = json_encode($json);
            echo $json_string;
        } else {
            echo 'no hay registros';
        }
    }
}

La conexión hacia la base de datos también funciona porque como les dije, otra función está hecha y si funciona.

La estructura de la tabla es así:

introducir la descripción de la imagen aquí

El problema es que no me retorna nada porque como ven en el código javascript hay un console.log(res) y me lo retorna vacío.

TheOligarch
  • 1,051
  • 6
  • 12
  • ¿La consola no muestra ningún mensaje de error de los que tienes en el código PHP? Por cierto, ¿qué sentido tiene esto: `if (isset($_GET)) {`? El otro isset bastaría, y no estoy seguro que eso funcione, al menos no es una forma canónica de programar. Si quieres verificar que un array está vacío bastaría con `if(elArray)`, pero aquí eso no es necesario. – A. Cedano Oct 26 '21 at 20:48
  • Si estás retornando datos en el response, no hagas echo. Mete el error en el response para saber en donde se cae. – Excorpion Oct 26 '21 at 20:49
  • el problema es que hay registros con tildes y eso está fallando, por eso no funciona, pero no sé cómo hacer que traia tildes en php – César López Oct 26 '21 at 21:13
  • si tienees retorno significa que no es tu PHP ni el el Ajax que hiciste, puntualiza la db por ejemplo select * from mydatab.resultado – XavRuss Oct 26 '21 at 21:17
  • Creo que el problema es de codificación de caracteres pues quité los registros con tildes y funciona, ya trae los registros – César López Oct 26 '21 at 21:20
  • Para evitar el problema de las tildes debes crear un entorno con un charset adecuado. Por lo general se usa `utf8`. Intenta esto antes de ejecutar la consulta: `$con->set_charset("utf8");` Si el problema persiste, significa que debes establecer el charset adecuado también en otros ámbitos, como el entorno PHP/HTML o en los datos mismos. [Consulta aquí](https://es.stackoverflow.com/a/59510/29967) para más detalles. – A. Cedano Oct 27 '21 at 16:09

0 Answers0