我正在制作一个网页,我从数据库中提取测验问题,并将其显示在我的页面中,即时通讯将ajax与php和MySQL结合使用,而我正在尝试这样做:

    $.ajax({
    url:'../servicios/obtenerPregunta.php',
    type:'post',
    data:{

    },
    dataType:'json',
    success: function(response){
      var contenedorPreguntas = document.querySelector('.cont-pregunta-examen');
      contenedorPreguntas.innerHTML = response[0]['pregunta'];
    },
    error:function(request, error){
      alert(error);
    }
  });


这是我的PHP:

<?php

require_once 'login.php';
$conexion = new mysqli($host_name,$user_name,$password,$data_base);

if($conexion->connect_error)die($conexion->error);

  $sentencia_sql = "CALL pa_obtener_preguntas";

  $resultado = $conexion -> query($sentencia_sql);

  if (!$resultado) die('Fallo la consulta a la BD, favor revisar la sentencia sql');

  $preguntas = array();

  while($pregunta = mysqli_fetch_assoc($resultado)) {
  $preguntas[]=$pregunta;
    }

   echo json_encode($preguntas);

?>


我一直使用这种方法并与其他项目一起使用,但是在这种情况下,它不会从我的数据库中带走任何东西,我的意思是,它没有显示任何错误或问题,只是它没有从我获得该过程的数据库中带来任何数据而且我测试了并且工作正常,我的login.php很好,一切都正常,但是我不知道为什么这不起作用

最佳答案

一个可能的原因可能是因为Ajax将响应转换为对象,而不是常规数组,并且您不能使用[0]获取对象的第一条记录。

采用:

first = response[Object.keys(response)[0]]; //gets the first object
contenedorPreguntas.innerHTML = first['pregunta'];


Here's a demo

10-08 06:21
查看更多