Ajax响应没有带来数据

Ajax response not bringing data

本文关键字:数据 响应 Ajax      更新时间:2023-09-26

我正在制作一个网页,我从我的数据库中进行测验问题,我在我的页面中显示它们,我使用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'];

下面是一个示例

必须设置header来纠正ajax请求中的dataType。所以添加

header("Content-type: application/json");

<?php