Ver Mensaje Individual
  #9 (permalink)  
Antiguo 22/05/2015, 14:16
Avatar de berkeleyPunk
berkeleyPunk
 
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa Respuesta: fetch_object() sólo me devuelve ID

Cita:
Iniciado por pateketrueke Ver Mensaje
...Sería bueno que muestras cómo es tu código actual...
De acuerdo .
Esto está en el documento que hace la petición:
Código HTML:
Ver original
  1. <form id="formularioComprar">
  2.     <h3>Comprar</h3>
  3.     <select id="cliente" name="cliente">
  4.         <option value="NULL">:: Elige tu nombre ::</option>
  5.     </select>
  6.     <select id="articulo" name="articulo">
  7.         <option value="NULL">:: Elige un artículo ::</option>
  8.     </select>
  9.     <input type="hidden" name="forma" value="formularioComprar">
  10.     <input type="submit" value="Comprar">
  11. </form>
  12.  
  13. <table id="tablaResultado"></table>
  14.  
  15. <div id="mensaje"></div>
  16.  
  17. <script type="text/javascript">
  18.  
  19.     $(document).ready(function() {
  20.         $(function() {
  21.             $.ajaxSetup({
  22.                 error: function(jqXHR, exception) {
  23.                    if (jqXHR.status === 0) {
  24.                        alert('Sin conexión: Verificar Red');
  25.                    } else if (jqXHR.status == 404) {
  26.                        alert('Página no encontrada. Error 404');
  27.                    } else if (jqXHR.status == 500) {
  28.                        alert('Error del servidor. Error 500');
  29.                    } else if (exception === 'parsererror') {
  30.                        alert('Fallo en la petición JSON');
  31.                    } else if (exception === 'timeout') {
  32.                        alert('Tiempo límite excedido');
  33.                    } else if (exception === 'abort') {
  34.                        alert('Se abortó la petición AJAX');
  35.                    } else {
  36.                        alert('Uncaught Error: ' + jqXHR.responseText);
  37.                    }
  38.                 }
  39.             });
  40.         });
  41.         $("#formularioComprar").on("submit", function(e) {
  42.             e.preventDefault();
  43.             var datos = $("#formularioComprar").serializeArray();
  44.             $.ajax({
  45.                 type: "POST",
  46.                 dataType: "json",
  47.                 url: "process.php",
  48.                 data: datos,
  49.                 success: function(response) {
  50.                     $("#tablaResultado").append( response.filaHTML );
  51.                     $("#mensaje").text( response.statusResponse );
  52.                 },
  53.                 complete: function(jqXHR, estado) {
  54.                     if (estado == "parsererror") {
  55.                         $("#mensaje").text( estado );
  56.                     }
  57.                 }
  58.             });
  59.         });
  60.     });


Esto está en el documento solicitado por la petición AJAX:
Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_POST["forma"])){$forma=$_POST["forma"];}
  4. if(isset($_POST["cliente"])){$cliente=$_POST["cliente"];}
  5. if(isset($_POST["articulo"])){$articulo=$_POST["articulo"];}
  6.  
  7. $filaHTML = "";
  8.  
  9. if($forma) {
  10.     if ($forma == "formularioComprar") {
  11.         $conexion = new mysqli("localhost", "root", "", "claves_foraneas");
  12.         $query2   = "
  13.             SELECT a.id,
  14.                    a.nombre,
  15.                    a.ciudad,
  16.                    b.id,
  17.                    b.codigo
  18.             FROM cliente a, compra b
  19.             WHERE a.id = b.id
  20.         ";
  21.  
  22.         if ( ($cliente != "NULL") && ($articulo != "NULL") ) {
  23.             if ( $resultado = $conexion->query($query2) ) {
  24.                 if ($resultado->num_rows > 0) {
  25.                     while ($row = $resultado->fetch_object()) {
  26.                         $filaHTML .= "<tr> <td> </td> <td>".$row->nombre."</td> <td> </td> <td> </td> </tr>";
  27.                     }
  28.                     $arrayRespuestas = array(
  29.                         'filaHTML' => $filaHTML,
  30.                         'statusResponse' => 'Respuesta AJAX OK'
  31.                     );
  32.                     echo json_encode($arrayRespuestas);
  33.                    
  34.                     switch(json_last_error()) {
  35.                         case JSON_ERROR_NONE:
  36.                             echo ' - Sin errores';
  37.                         break;
  38.                         case JSON_ERROR_DEPTH:
  39.                             echo ' - Excedido tamaño máximo de la pila';
  40.                         break;
  41.                         case JSON_ERROR_STATE_MISMATCH:
  42.                             echo ' - Desbordamiento de buffer o los modos no coinciden';
  43.                         break;
  44.                         case JSON_ERROR_CTRL_CHAR:
  45.                             echo ' - Encontrado carácter de control no esperado';
  46.                         break;
  47.                         case JSON_ERROR_SYNTAX:
  48.                             echo ' - Error de sintaxis, JSON mal formado';
  49.                         break;
  50.                         case JSON_ERROR_UTF8:
  51.                             echo ' - Caracteres UTF-8 malformados, posiblemente están mal codificados';
  52.                         break;
  53.                         default:
  54.                             echo ' - Error desconocido';
  55.                         break;
  56.                     }
  57.                     echo PHP_EOL;
  58.                 }
  59.             }
  60.         }
  61.     }
  62. }

Te actualizo. Hice una prueba más, pero ahora con la función json_last_error(), que informa si está mal construido el JSON. En efecto, esta función me devuelve: Caracteres UTF-8 malformados, posiblemente están mal codificados.

Saludos!