从JQuery读取'echo json_encode()'的正确方法

时间:2011-07-06 15:42:29

标签: php jquery ajax echo json

我正在使用: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 个答案:

答案 0 :(得分:9)

根据this question application/json,你应该设置mime类型。然后jQuery会理解答案是json元素。为此,您需要执行以下操作:

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

在打印任何内容之前的UpdateEditAStudent.php

答案 1 :(得分:6)

您不必在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);
    }
});

答案 2 :(得分:3)

您需要定义正确的dataType或提供正确的标题,如Lumbendil所述。

您可以手动将dataType定义为json,因此您的代码如下所示:

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

答案 3 :(得分:1)

这是一个数组。您应该做警报(数据['内容']);.

答案 4 :(得分:0)

做这样的事情

$Stuff = 'Hello world';

$Success = true;
$Content = $Stuff;

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