Правильный способ чтения 'echo json_encode ()' из JQuery - PullRequest
6 голосов
/ 06 июля 2011

Я использую: 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);}
});  

Ответы [ 5 ]

9 голосов
/ 06 июля 2011

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

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

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

6 голосов
/ 06 июля 2011

Вам не нужно добавлять заголовок в файл PHP, просто используйте эту функцию Jquery 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);
    }
});
3 голосов
/ 06 июля 2011

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

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

$.ajax({  
   type: "GET",  
    url: "../pgs/UpdateEditAStudent.php", 
   data: "FirstName="+ sFirstName ,  
   dataType: "json",
   ...etc
1 голос
/ 06 июля 2011

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

0 голосов
/ 16 января 2016

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

$Stuff = 'Hello world';

$Success = true;
$Content = $Stuff;

$Response = array('Success' => $Success, 'Content' => $Content);
echo json_encode($Response);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...