2011-07-06 10 views
6

Sto usando: echo json_encode ($ Response); per inviare un array associativo a JQuery Ajax. Ogni volta che provo a leggere ogni valore della chiave ID, ottengo un valore indefinito. Ti prego, aiutami a capire quello che sto facendo così sbagliato ... Grazie in anticipoModo corretto per leggere 'echo json_encode()' da JQuery

My Code PHP:

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

Il mio codice 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);} 
}); 

risposta

1

E ' un array. Probabilmente dovresti fare attenzione (dati ['Contenuto']) ;.

+0

Javascript 'arrays' con chiave value =>? – Niklas

9

È necessario impostare anche il tipo mime, in base al numero this question è application/json. Quindi jQuery capirà che la risposta è un elemento json. Per farlo, devi effettuare le seguenti operazioni:

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

Nella tua UpdateEditAStudent.php prima di stampare qualsiasi cosa.

+0

@Lumbenil. Grazie mille. Qual è il vantaggio della soluzione rispetto alla definizione del tipo di dati corretto in $ .ajax dataType: "json", come suggerito da Niklaas? – SirBT

+0

Semplicemente correttezza di 'UpdateEditAStudent.php', dato che ora Apache (o qualunque sia il server web) sta dicendo a chiunque scarichi che l'URL dato è una pagina HTML (tipo mime' text/html') invece del vero tipo mime, questo è 'application/json'. – Lumbendil

2

È necessario definire il dataType corretto o fornire l'intestazione corretta, come descritto da Lumbendil.

È possibile definire manualmente il dataType a json, in modo che il codice sarà simile:

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

Grazie per aver funzionato molto bene per me! Fantastico! MrGreen – SirBT

4

Non è necessario aggiungere un'intestazione al file PHP, basta usare questo Jquery parseJSON function:

tenere questo codice PHP in quanto è:

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

E per il 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

fare qualcosa di simile

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

Ha chiesto informazioni sulla codifica da JQuery. Hai dato un esempio di matrice da php. Lo ha già fatto. –

+0

bot 91203 nessuna risposta – asdasd

Problemi correlati