Правильный способ чтения 'echo json_encode ()' из JQuery

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

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

Вы также должны установить тип mime, который, согласно этому вопросу, является application/json . Тогда jQuery поймет, что ответ – это элемент json. Для этого вы должны сделать следующее:

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

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

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

Сохраните этот код 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); } }); 

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

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

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

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

сделать что-то подобное

 $Stuff = 'Hello world'; $Success = true; $Content = $Stuff; $Response = array('Success' => $Success, 'Content' => $Content); echo json_encode($Response);