
No logro formar el JSON a enviar como respuesta de un AJAX
Publicado por Berkeley (3 intervenciones) el 22/05/2015 14:43:51
Éste es mi primer post! 
Saludos a todos y formulo mi problema, esperando ayuda.
La idea: es hacer una petición ajax con jQuery a un archivo llamado process.php. La idea es que este archivo saque información de una BD, la ponga dentro de un jSON, y que este jSON sea enviado como respuesta de la petición asíncrona.
El problema: el objeto jqXHR me devuelve un parsererror. He realizado tropecientas pruebas, y al parecer el problema es que json_encode() no forma el jSON correctamente cuando le paso como valor un objeto obtenido con fetch_object().
Mi AJAX:
Mi process.php
Utilizo json_last_error() para saber si se formó mal el JSON, y la respuesta que obtengo es: Caracteres UTF-8 malformados, posiblemente están mal codificados'
¿Pueden ayudarme a solucionar este problema?
Saludos!


Saludos a todos y formulo mi problema, esperando ayuda.
La idea: es hacer una petición ajax con jQuery a un archivo llamado process.php. La idea es que este archivo saque información de una BD, la ponga dentro de un jSON, y que este jSON sea enviado como respuesta de la petición asíncrona.
El problema: el objeto jqXHR me devuelve un parsererror. He realizado tropecientas pruebas, y al parecer el problema es que json_encode() no forma el jSON correctamente cuando le paso como valor un objeto obtenido con fetch_object().
Mi AJAX:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script type="text/javascript">
$("#formulario").on("submit", function(e) {
e.preventDefault();
var datos = $("#formulario").serializeArray();
$.ajax({
type: "POST",
dataType: "json",
url: "process.php",
data: datos,
success: function(response) {
$("#tablaResultado").append( response.filaHTML );
$("#mensaje").text( response.statusResponse );
},
complete: function(jqXHR, estado) {
if (estado == "parsererror") {
$("#mensaje").text( estado );
}
}
});
});
Mi process.php
1
2
3
4
5
6
7
8
9
$filaHTML = "";
while ($row = $resultado->fetch_object()) {
$filaHTML .= "<tr> <td> </td> <td>".$row->nombre."</td> <td> </td> <td> </td> </tr>";
}
$arrayRespuestas = array(
'filaHTML' => $filaHTML,
'statusResponse' => 'Respuesta AJAX OK'
);
echo json_encode($arrayRespuestas);
Utilizo json_last_error() para saber si se formó mal el JSON, y la respuesta que obtengo es: Caracteres UTF-8 malformados, posiblemente están mal codificados'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
switch(json_last_error()) {
case JSON_ERROR_NONE:
echo ' - Sin errores';
break;
case JSON_ERROR_DEPTH:
echo ' - Excedido tamaño máximo de la pila';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Desbordamiento de buffer o los modos no coinciden';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Encontrado carácter de control no esperado';
break;
case JSON_ERROR_SYNTAX:
echo ' - Error de sintaxis, JSON mal formado';
break;
case JSON_ERROR_UTF8:
echo ' - Caracteres UTF-8 malformados, posiblemente están mal codificados';
break;
default:
echo ' - Error desconocido';
break;
}
¿Pueden ayudarme a solucionar este problema?
Saludos!

Valora esta pregunta


0