
Problema al gestionar errores de php mediante jQuery
Publicado por Octavio (7 intervenciones) el 27/08/2015 21:07:47
Hola a todos,
llevo unos días atascado en este tema y no encuentro la manera. Para ponernos en situación, tengo una clase conexión, un html y una página php intermedia. He estado haciendo pruebas para gestionar los errores que puedan producirse en la clase conexión y mostrarlos por pantalla sin necesidad de excepciones.
Primero he hecho una prueba sin usar ajax, y el resultado es el que esperaba
Método Abrir conexión de la clase conexión
index.php
Hasta aquí todo bien. Si falseo los parámetros de conexión me muestra el error por pantalla.
El problema viene cuando le añado ajax. Al utilizar $.ajax de jQuery, si falseo los parámetros de conexión no puedo controlar esos mensajes de error porque no entra en "success", sino en "error".
prueba.php
Si no falseo la conexión me entra por el 'success' y todo correcto, pero si la falseo me entra por 'error' cuando creo que debería entrar por 'success'.
¿Alguien sabría decirme qué me está fallando? Muchas gracias.
llevo unos días atascado en este tema y no encuentro la manera. Para ponernos en situación, tengo una clase conexión, un html y una página php intermedia. He estado haciendo pruebas para gestionar los errores que puedan producirse en la clase conexión y mostrarlos por pantalla sin necesidad de excepciones.
Primero he hecho una prueba sin usar ajax, y el resultado es el que esperaba
Método Abrir conexión de la clase conexión
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public function OpenConnection()
{
// Inicializamos las variables de error
$this->ErrNo = 0;
$this->ErrDes = "";
// Abrimos conexión
if (!$this->IsOpen)
$this->conn = new mysqli($this->Host, $this->User, $this->Pass, $this->Name);
// Comprobamos si hay algún error
if ($this->conn->connect_errno)
{
$this->ErrNo = $this->conn->connect_errno;
$this->ErrDes = $this->conn->connect_error;
return false;
}
$this->IsOpen = true;
return true;
}
index.php
1
2
3
4
5
6
$conn = new connection();
if ($conn->OpenConnection())
echo "ok";
else
echo $conn->ErrDes;
Hasta aquí todo bien. Si falseo los parámetros de conexión me muestra el error por pantalla.
El problema viene cuando le añado ajax. Al utilizar $.ajax de jQuery, si falseo los parámetros de conexión no puedo controlar esos mensajes de error porque no entra en "success", sino en "error".
prueba.php
1
2
3
4
5
6
7
8
9
10
$conn = new connection();
$vResponse = array();
if (!$conn->OpenConnection())
{
$vErrores = array('Code' => $conn->ErrNo, 'Message' => $conn->ErrDes);
$vResponse = array('Error' =>$vErrores);
}
echo json_encode($vResponse);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$.ajax({
data: param,
type: 'post',
dataType: 'json',
url: 'prueba.php',
success: function(data){
var strResponse = '';
if (data.Error.length == 0)
strResponse = 'ok';
else
{
for (var i = 0; i < data.Error.length; i++)
strResponse = strResponse + '(' + data.Error[i].Code + ')-' + data.Error[i].Message + '<br />';
}
// Pintamos error
},
error: function(){
// Excepcion
}
});
Si no falseo la conexión me entra por el 'success' y todo correcto, pero si la falseo me entra por 'error' cuando creo que debería entrar por 'success'.
¿Alguien sabría decirme qué me está fallando? Muchas gracias.
Valora esta pregunta


0