2011-07-06 11 views
6

Używam: echo json_encode ($ Response); wysłać tablicę asocjacyjną z powrotem do Ajaxu JQuery. Ilekroć próbuję odczytać każdą wartość klucza ID otrzymuję nieokreśloną wartość. Proszę mi pomóc dowiedzieć się, co robię tak źle ... Z góry dziękiPoprawny sposób odczytu "echo json_encode()" z JQuery

mojego kodu PHP:

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

Mój kod 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);} 
}); 

Odpowiedz

1

To tablica. Prawdopodobnie powinieneś zrobić alert (dane ["Treść"]).

+0

JavaScript 'arrays' z klucza => wartość? – Niklas

9

Powinieneś ustawić typ mime tak, aby zgodnie z this question jest application/json. Wtedy jQuery zrozumie, że odpowiedź jest elementem json. Aby to zrobić, można wykonać następujące czynności:

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

w twojej UpdateEditAStudent.php przed wydrukowaniem czegokolwiek.

+0

@Lumbenil. Dziękuję Ci bardzo. Jaka jest zaleta twojego rozwiązania w porównaniu do definiowania poprawnego typu danych w $ .ajax dataType: "json", jak sugerował Niklaas? – SirBT

+0

Po prostu poprawność 'UpdateEditAStudent.php', ponieważ teraz Apache (lub cokolwiek jest serwer WWW) mówi każdemu, że dany URL jest stroną HTML (typ MIME' text/html') zamiast prawdziwym typem MIME, to jest 'application/json'. – Lumbendil

2

Musisz zdefiniować poprawną dataType lub podać poprawny nagłówek, jak opisał Lumbendil.

Można ręcznie zdefiniować dataType do json, więc Twój kod będzie wyglądać następująco:

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

Dziękuję, to zadziałało bardzo dobrze! Fantastyczny! :-D – SirBT

4

Nie trzeba dodać nagłówek do pliku PHP, wystarczy użyć tej Jquery parseJSON function:

Zachowaj ten kod PHP jak to jest:

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

I 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

zrobić coś takiego

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

Zapytał o kodowanie z JQuery. Podałeś przykład tablicy od php. On już to zrobił. –

+0

bot 91203 brak odpowiedzi – asdasd

Powiązane problemy