Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/05/2015, 21:08
Avatar de berkeleyPunk
berkeleyPunk
 
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 3 meses
Puntos: 22
Pregunta Respuesta: Cómo hacer que AJAX devuelva un JSON

Cita:
Iniciado por Nopal_Studio Ver Mensaje
Creo que esta usando mal el Ajax...
Gracias por responder, amigo Nopal_Studio.

Hice ya otras pruebas y he semilocalizado el problema, aunque sigo sin poder solucionarlo. He aquí los scripts:
Código Javascript:
Ver original
  1. $("#formularioCrearUsuario").on("submit", function(e) {
  2.     e.preventDefault();
  3.     var datos = $("#formularioCrearUsuario").serializeArray();
  4.     $.ajax({
  5.         type: "POST",
  6.         dataType: "json",
  7.         url: "process.php",
  8.         data: datos,
  9.     }).done(function(response){
  10.         for (var i in response) {
  11.             $("#tablaResultado").html( response[i] );
  12.         }
  13.     });
  14. });
Código PHP:
$respuesta = new stdClass();

if ( 
$resultado $conexion->query($query) ) {
    while (
$fila $resultado->fetch_array()) {
        
$num                $fila["numero"];
        
$nom                $fila["nombre"];
        
$ciu                $fila["ciudad"];
        
$filaHTML           "";
        
$selectCliente      "";

        
$filaHTML          .= "<tr> <td>".$num."</td> <td>".$nom."</td> <td>".$ciu."</td> <td>...</td> </tr>";
        
$selectCliente     .= "<option>".$nom."</option>";
    }    
    
$arrayRespuestas = array(
        
'filaHTML' => 'filaHTML',
        
'selectCliente' => 'selectCliente'
    
);
    echo 
json_encode($arrayRespuestas);


Esto que ves aquí, mi amigo, funciona ok. Pero sólo lo hace porque los valores de $arrayRespuestas son cadenas. Si en su lugar ponermos variables, entonces no funciona y sale un error parsererror. Es decir, no funciona si ponemos esto:
Código PHP:
$arrayRespuestas = array(
'filaHTML' => $filaHTML,
'selectCliente' => $selectCliente
); 
Entonces, el array no está mal construido, lo que está mal son sus valores, que AJAX no sabe qué hacer con ellos.

¿Alguna idea?