2011-01-04 22 views
23

que estoy usando el código jQuery:múltiples valores de retorno de PHP con jQuery AJAX

$.ajax 
({ 
    type: "POST", 
    url: "customerfilter.php", 
    data: dataString, 
    cache: false, 
    success: function(html) 
    { 
     $(".custName").html(html); 
    } 
}); 

¿Cómo puedo hacer algo como esto: $(".projDesc").html(html1); por lo que puedo dividir los resultados devueltos en dos elementos HTML?

echo "<p>" .$row['cust_name']. "</p>"; 

ése es el que estoy usando PHP y quiero hacer eco de otra declaración que puedo poner en otro elemento HTML

¿Tiene esto sentido?

Respuesta

54

Utilice json_encode() para convertir una matriz asociativa de PHP a JSON y use $.getJSON(), que devolverá una matriz Javascript.

Ejemplo:

<?php echo json_encode(array("a" => "valueA", "b" => "valueB")); ?> 

en javascript:

$.getJSON("myscript.php", function(data) { 
    alert("Value for 'a': " + data.a + "\nValue for 'b': " + data.b); 
}); 
+0

Impresionante! ¡Muchas gracias por la gran pista! :) – drpelz

+1

¿Usas el .getJson dentro de la función de éxito de la publicación de Ajax o la separas por completo? – Arken

+0

@Arken No estoy seguro de lo que quieres decir. 'getJSON()' toma una URL y una función de controlador de éxito que recibe los datos decodificados como su argumento. No necesita volver a llamar en el controlador, ya que la solicitud ya se ha ejecutado. –

3

¿Por qué no devuelve un objeto JSON? De esta forma, puede poner fácilmente muchos resultados diferentes dentro de la respuesta de ajax.

41

realizar su devolución respuesta JSON, tendrá que cambiar su jQuery para esto, así que el tipo de datos esperado es JSON:

$.ajax 
({ 
    type: "POST", 
    url: "customerfilter.php", 
    dataType: 'json', 
    cache: false, 
    success: function(data) 
    { 
     $(".custName").html(data.message1); 
     $(".custName2").html(data.message2); 
    } 
}); 

Luego necesita codificar su respuesta como una matriz JSON:

<?php echo json_encode(
     array("message1" => "Hi", 
     "message2" => "Something else") 
) ?> 
+0

data: json, debe ser dataType: "json", pero gracias! – benhowdle89

+0

Corregido, gracias. –

+1

Debería ser dataType: 'json'. Te estás perdiendo las comillas. – Stephen305

Cuestiones relacionadas