2011-07-06 12 views
6

Я использую: echo json_encode ($ Response); отправить ассоциативный массив обратно в JQuery Ajax. Всякий раз, когда я пытаюсь прочитать каждое значение ключа ID, я получаю неопределенное значение. Пожалуйста, помогите мне понять, что я делаю это неправильно ... Заранее спасибоПравильный способ чтения 'echo json_encode()' из JQuery

Мой PHP код:

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

Мой 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);} 
}); 

ответ

1

Это массив. Вероятно, вы должны сделать предупреждение (данные ['Content']) ;.

+0

Javascript 'arrays' с ключом => значение? – Niklas

9

Вы также должны установить тип мим, который, согласно this question, равен application/json. Тогда jQuery поймет, что ответ - это элемент json. Чтобы сделать это, вам нужно сделать следующее:

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

В вашем UpdateEditAStudent.php перед печатью ничего.

+0

@ Лумбенил. Большое спасибо. В чем преимущество вашего решения по сравнению с определением правильного типа данных в $ .ajax dataType: «json», как предложил Никлас? – SirBT

+0

Простое исправление 'UpdateEditAStudent.php', так как теперь Apache (или любой другой веб-сервер) сообщает любому пользователю, что данный URL-адрес является HTML-страницей (тип mime' text/html') вместо его истинного типа mime, это 'application/json'. – Lumbendil

2

Вам необходимо определить правильный dataType или указать правильный заголовок, как описано в Lumbendil.

Вы можете вручную определить dataType к json, так что ваш код будет выглядеть следующим образом:

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

Спасибо, что это сработало очень хорошо для меня! Фантастика! :-D – SirBT

4

Вам не нужно добавить заголовок в файл PHP, просто использовать этот Jquery parseJSON function:

Держите это PHP код, как это:

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

И для 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

сделать что-то вроде этого

$Stuff = 'Hello world'; 

$Success = true; 
$Content = $Stuff; 

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

Он спросил о кодировке JQuery. Вы привели пример массива из php. Он уже это сделал. –

+0

bot 91203 no-reply – asdasd

Смежные вопросы