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