尝试从PDO FetchAll查询读取json_encode数据时出现未知错误


unknown error when trying to read json_encode data from PDO FetchAll Query

我试图从JSON中的php函数管理数据,但是当我试图访问它时,我的Ajax总是去错误方法。

My PHP Function:

function retornarPreguntas()
{
    try {
        global $conexion;
        $query = $conexion->query('SELECT idPreguntas, Pregunta, Categoria, Visible, formato FROM preguntas');
        $query->execute();
        $preguntas = $query->fetchAll(PDO::FETCH_ASSOC);
        header('Content-type:application/json;charset=utf-8');  
        $json = json_encode($preguntas);
        echo $json;
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }   
}

my JQuery Function

            function crearPreguntas() {
              $.ajax({
                url: "includes/RespuestasAjax.php",
                type: "POST",
                data: {
                  funcion: "retornarPreguntas"
                },
                dataType: "json",
                success: function(data) {
                  var html = "<tr><td colspan='5' align='center'>Evaluación</td></tr>";
                  html += '<tr><td colspan="5" align="center">Factores Generales de desempeño y rendimiento</td></tr>';
                  //var factores = retornarFactores();
                  alert("uno");
                  for (var i = 0; i < data.length; i++) {
                    html += '<tr>';
                    html += '<td>' + data[i]['pregunta'] + '</td>';
                    html += '<td><select id="pregunta' + i + '">';
                    for (k = 1; k <= 5; k++) {
                      html += '<option value="' + k + '">' + k + '</option>';
                    }
                    html += '</tr>';
                  }
                  $('#preguntas').empty();
                  $('#preguntas').append(html);
                },
                error: function(codigo) {
                  console.log(codigo);
                }
              });
            }

如果我改变我的PHP函数print_r我的警报显示数据,但我不能访问的关键索引,如果我尝试json然后它给我的错误:

[object object]{readyState: 4, responseText: ", status: 200, statusText: "OK"}

你知道我做错了什么吗?

我刚刚把这个添加到我的php代码中:

$preguntas = $query->fetchAll(PDO::FETCH_ASSOC);
header('Content-Type: text/html;charset=utf-8');
$json = json_encode($preguntas);

代替:

$preguntas = $query->fetchAll(PDO::FETCH_ASSOC);
**header('Content-type:application/json;charset=utf-8');**  
$json = json_encode($preguntas);