Foros del Web » Programando para Internet » PHP »

json_encode devuelve una H inicial

Estas en el tema de json_encode devuelve una H inicial en el foro de PHP en Foros del Web. Buenas tardes a todos. Necesito de su ayuda. Tengo una aplicacion que al ejecutarla en local en un servidor xampp funciona sin problemas, pero al ...
  #1 (permalink)  
Antiguo 15/01/2019, 13:47
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 0
json_encode devuelve una H inicial

Buenas tardes a todos.

Necesito de su ayuda. Tengo una aplicacion que al ejecutarla en local en un servidor xampp funciona sin problemas, pero al montarla en un hosting de pago, los mensajes que retorna PHP vienen con una H{codigo: 2, mensaje: 'exito'} y esto lo considera un error la funcion ajax y sale por el metodo error: he buscado en inet, pero no tengo la menor idea de por que pone esa H. les copio el codigo para ver si pueden orientarme.

Codigo PHP
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.     require ("../modelo/mdl_m_usuarios.php");
  5.  
  6.     $usuario = new Usuario();
  7.  
  8.     if($_POST["ac"] == "vu"){ // Validar Usuario
  9.         $resp = $usuario->mdl_validar_usuario($_POST["usu"], $_POST["cla"]);
  10.  
  11.         if($resp->num_rows > 0){           
  12.             $_SESSION["autoriza"] = "auth";
  13.             // Obtenemos datos del usuario
  14.             $filas = $resp->fetch_array();
  15.  
  16.             //Seteamos variable a devolver ajax
  17.             $retorno["codigo"] = $filas["codigo"];
  18.             $retorno["mensaje"] = $filas["mensaje"];           
  19.  
  20.             echo json_encode($retorno, JSON_FORCE_OBJECT);
  21.  
  22.             $resp->free();
  23.         }
  24.         else {
  25.             $retorno["codigo"] = "2";
  26.             $retorno["mensaje"] = "SP no retorno un resultado";
  27.  
  28.             echo json_encode($retorno, JSON_FORCE_OBJECT);
  29.  
  30.             $resp->free();
  31.         }
  32.     }
  33. ?>

Codigo Javascript
Código Javascript:
Ver original
  1. function js_validar_usuario(){ 
  2.     var usuario = $('#tbx_usuario').val();
  3.     var clave = $('#tbx_clave').val();
  4.  
  5.     if(usuario == ''){
  6.         $('#div_msg_alerta').show();
  7.         $('#div_msg_correcto').hide();
  8.         $('#div_msg_error').hide();
  9.         $('#div_msg_alerta').html('Debe ingresar su Nombre de Usuario');
  10.         return;
  11.     }
  12.  
  13.     if(clave == ''){
  14.         $('#div_msg_alerta').show();
  15.         $('#div_msg_correcto').hide();
  16.         $('#div_msg_error').hide();
  17.         $('#div_msg_alerta').html('Debe ingresar su Contraseña');
  18.         return;
  19.     }
  20.  
  21.     var dataString = 'usu=' + usuario;
  22.         dataString += '&cla=' + clave;     
  23.         dataString += '&ac=vu';        
  24.  
  25.     $.ajax({
  26.         url:"controlador/ctrl_c_usuarios.php",
  27.         cache:false,
  28.         type:"POST",
  29.         data: dataString,
  30.         dataType: "json",
  31.         beforeSend: function(){
  32.             $('#div_msg').html('<img src = \'img/cargando3.gif\' width = \'200\' height = \'100\'  />');
  33.         },
  34.         error: function(xhr, status, error) {
  35.             //var err = eval("(" + xhr.responseText + ")");
  36.             //alert(err.Message);      
  37.             alert(error);  
  38.             alert(xhr.responseText);
  39.             return;            
  40.         },
  41.         success:function(response){        
  42.             if(response.codigo == '4'){
  43.                 $('#div_msg_alerta').hide();
  44.                 $('#div_msg_correcto').show();
  45.                 $('#div_msg_error').hide();            
  46.                 $('#div_msg_correcto').html(response.mensaje + '.  Espere por favor...');                  
  47.             }
  48.             else if(response.codigo == '2'){
  49.                 $('#div_msg_alerta').show();
  50.                 $('#div_msg_correcto').hide();
  51.                 $('#div_msg_error').hide();            
  52.                 $('#div_msg_alerta').html(response.mensaje);               
  53.             }
  54.             else{
  55.                 $('#div_msg_alerta').hide();
  56.                 $('#div_msg_correcto').hide();
  57.                 $('#div_msg_error').show();            
  58.                 $('#div_msg_alerta').html(response.mensaje);
  59.             }
  60.         }
  61.     });
  62. }

Mensaje que retorna
error: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

error.responseText : H{"codigo":"4","mensaje":"Usted es administrador. Bienvenido"


Cualquier ayuda es bienvenida.

Salud2
  #2 (permalink)  
Antiguo 15/01/2019, 21:29
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: json_encode devuelve una H inicial

ese la tra H, que estas viendo puede ser, un caracter desconocido, o en otro caso podria ser el caracter BOM de utf8, recuerda siempre desactivarlo, en los Editores que uses para editar los archivos PHP por que algunos lo agregan automaticamente, el caracter BOM de utf8 es una secuencia de BYTES que indica que el archivo contiene caracteres en UTF8, revisa tu archivo y tu editor PHP, y quita el UTF8-BOM, te sugiero usar NOTEPAD++
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 16/01/2019, 08:52
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: json_encode devuelve una H inicial

Gracias por tu respuesta tuadmin.

Abri y guarde los archivos con notepad++ y estan setados como utf8 without BOM.
Todo el codigo lo escribi con sublime text 3
Ademas te comento, el mismo codigo, exacto sin cambios, funciona sin problemas en xamp local.
Lamme al hosting porque hice una prueba sencilla de una llamada jquery ajax y no funciono. Sera problema del hosting??. cuando llame me dijeron que no sabian de alguna restriccion instalada.

Salud2
  #4 (permalink)  
Antiguo 16/01/2019, 11:34
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: json_encode devuelve una H inicial

Cita:
Iniciado por El_fenix Ver Mensaje
Gracias por tu respuesta tuadmin.

Abri y guarde los archivos con notepad++ y estan setados como utf8 without BOM.
Todo el codigo lo escribi con sublime text 3
Ademas te comento, el mismo codigo, exacto sin cambios, funciona sin problemas en xamp local.
Lamme al hosting porque hice una prueba sencilla de una llamada jquery ajax y no funciono. Sera problema del hosting??. cuando llame me dijeron que no sabian de alguna restriccion instalada.

Salud2
solo te queda verificar con algun editor HEXADECIMAL, y abrir el archivo del hosting y comprobar que exactamente se trata de la letra "H" , de ser asi, en algun momento se te esta colgando el caracter, puede ser, de alguna libreria que estes usando con algun INCLUDE o REQUIRE
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9

Etiquetas: devuelve, funcion, html, inicial, url, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:07.