2011-07-06 7 views
6

Estoy usando: echo json_encode ($ Response); para enviar una matriz asociativa a JQuery Ajax. Cada vez que trato de leer cada valor de clave de identificación obtengo un valor indefinido. Por favor, ayudarme a averiguar lo que estoy haciendo tan mal ... Gracias de antemanoForma correcta de leer 'echo json_encode()' de JQuery

Mi Código PHP:

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

$Response = array('Success' => $Success, 'Content' => $Content); 
echo json_encode($Response); 
# #

Mi código JS:

var sFirstName  = $('#student_first_name').attr('value'); 

$.ajax({ 
    type: "GET", 
    url: "../pgs/UpdateEditAStudent.php", 
    data: "FirstName="+ sFirstName , 

    //The below code will give me: {"Success":true,"Content":"Hello world"} 
    success: function(data){$("#Ajax_response").html(data);} 

    //The popup window will show me "Undefined" 
    //and: {"Success":true,"Content":"Hello world"} 
    success: function(data){$("#Ajax_response").html(data); alert(data.Content);} 
}); 

Respuesta

1

¡Es una matriz. Probablemente deberías hacer una alerta (datos ['Contenido']) ;.

+0

Javascript 'arrays' con llave valor =>? – Niklas

9

También debe establecer el tipo de mimo, que de acuerdo con this question es application/json. Entonces jQuery entenderá que la respuesta es un elemento json. Para hacerlo, usted haría lo siguiente:

header('Content-Type: application/json'); 

En su UpdateEditAStudent.php antes de imprimir nada.

+0

@Lumbenil. Muchas gracias. ¿Cuál es la ventaja de su solución en comparación con la definición del tipo de datos correcto en $ .ajax dataType: "json", como sugirió Niklaas? – SirBT

+0

Simplemente corrección de 'UpdateEditAStudent.php', ya que ahora Apache (o lo que sea que el servidor web es) le dice a cualquiera que descargue que la URL dada es una página HTML (mime type' text/html') en lugar de su verdadero tipo mime, eso es 'application/json'. – Lumbendil

2

Debe definir el dataType correcto o proporcionar el encabezado correcto, como se describe en Lumbendil.

Se puede definir manualmente el dataType a json, por lo que el código se vería así:

$.ajax({ 
    type: "GET", 
    url: "../pgs/UpdateEditAStudent.php", 
    data: "FirstName="+ sFirstName , 
    dataType: "json", 
    ...etc 
+0

¡Gracias, esto funcionó muy bien para mí! ¡Fantástico! :-D – SirBT

4

Usted no tiene que agregar un encabezado en el archivo PHP, sólo tiene que utilizar este Jquery parseJSON function:

Mantenga el código PHP como es:

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

$Response = array('Success' => $Success, 'Content' => $Content); 
echo json_encode($Response); 

Y para el JS:

$.ajax({ 
    type: "GET", 
    url: "../pgs/UpdateEditAStudent.php", 
    data: "FirstName="+ $('#student_first_name').val(), 

    success: function(data){ 
     // Here is the tip 
     var data = $.parseJSON(data); 

     alert(data.Content); 
    } 
}); 
0

hacer algo como esto

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

$Response = array('Success' => $Success, 'Content' => $Content); 
echo json_encode($Response); 
+0

Preguntó sobre la codificación de JQuery. Usted dio un ejemplo de una matriz de php. Él ya lo hizo. –

+0

bot 91203 sin respuesta – asdasd

Cuestiones relacionadas