我试图通过jQuery,Ajax和PHP从SQL数据库中获取数据。
这是jQuery代码
$.ajax({
url: 'OpenQuiz.php',
data: '',
dataType:'json',
success: function(data) {
var one = data[0];
}
}
$(document).ajaxComplete(function(event,request,settings) {
alert("check");
}
以下是名为“OpenQuiz.php”的PHP文件末尾的json编码行
echo json_encode($QuizName);
echo json_encode($options);
echo json_encode($votes);
echo json_encode($row_num);
echo json_encode($percentage);
echo json_encode($TruncPercentage);
请注意: $ options,$ votes,$ Percentage和$ TruncPercentage都是二维数组。 $ row_num是一个整数。 $ Quiz_Name是一维数组。
我发现jQuery运行正常并且调用了ajax请求,因为“check”的警告框出现了。问题是我不知道如何在转移后访问变量。我知道它与data [0]有关但我真的不明白“data [0]”的意思或它代表什么。基本上我如何使用PHP文件中的json_encode访问我发送的变量?
答案 0 :(得分:1)
data [0]是返回的数组中的第一个json_encoded项。你不应该单独json_encode所有,你应该建立一个数组和json_encode这个。
$items = array('QuizName'=>$QuizName,'options'=>$options, ... ,'TruncPercentage'=>$TruncPercentage);
echo json_encode($items);
然后你用:
检索success: function(data) {
var qn = data.QuizName,
opt = data.options;
}
对于每个项目,依此类推,数据。[whatever]和[whatever]是你在数组中给出它的项目的名称。我知道我最初说是通过索引(data [0])检索,但我更喜欢明确检索,以便代码更易于维护。
作为旁注,您可以通过在PHP端正确设置标题来消除ajax调用中的datatype:'json'
声明:
header('Content-type: application/json');
将其放在文档顶部会强制服务器将页面识别为json。比jQuery寻找它更加一致和明确。