下面是最终构建数组的几个查询。
if(isset($_POST['getarray'])){
try{
$ret = array();
$stmt = $db->prepare('SELECT groupdate, groupid
FROM participationtemp
WHERE memberid = :memberid
AND groupid = :groupid
ORDER BY groupdate, groupid DESC');
$stmt->bindValue(':groupid', $_POST['groupid'], PDO::PARAM_INT);
$stmt->bindValue(':memberid', $_SESSION['memberid'], PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row){
$attenddate = $row[0];
$stmt = $db->prepare('SELECT h.clientid, attend, attend_date
FROM history AS h
INNER JOIN suspended AS s on s.clientid = h.clientid
WHERE h.memberid = :memberid
AND h.groupid = :groupid
AND attend_date = :attenddate
AND suspend = "N"');
$stmt->bindValue(':memberid', $_SESSION["memberid"], PDO::PARAM_INT);
$stmt->bindValue(':groupid', $_POST['groupid'], PDO::PARAM_INT);
$stmt->bindValue(':attenddate', $attenddate, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row ) {
array_push($ret, ['id' => $row[0], 'gdate' => $row[2]]);
}
}
echo json_encode($ret);
exit();
} catch (PDOException $ex){
mail_error($ex);
}
}
返回 JQuery 后,alert(re);
显示我成功创建了数组。
success:function(re){
alert(re);
但我在访问数组数据时遇到问题。没有成功,这就是我尝试过的:
data = $.parseJSON(re);
$.each(data, function(i, val) {
alert(i + "=" + val);
});
还有这个:
data = $.parseJSON(re);
$.each(data, function(i, val) {
if(i == "id"){
alert(i + "=" + val);
}
if(i == "gdate"){
alert(i + "=" + val);
}
});
我也尝试过点表示法
。
$.each(re.id, function(i, val) {
alert(i + "=" + val);
}
});
$.each(re.gdate, function(i, val) {
alert(i + "=" + val);
});
我以前从未使用过 JSON,也不明白为什么我无法检索数组数据。任何帮助将不胜感激。谢谢。
最佳答案
以下代码检查 re
是字符串还是对象。后者是可能的,如果 jQuery.ajax()
方法与“json”dataType
一起使用。此外,如果响应 MIME 类型为 application/json
(Content-Type
HTTP header ),jQuery 能够自动解析 JSON。因此,最好检查 re
是否已被 jQuery 解析。
var d = typeof re === 'string' ? JSON.parse(re) : re;
var i;
for (i = 0; i < d.length; i++) {
console.log("id = ", d[i].id,
"gdate = ", d[i].gdate);
}
我建议从 PHP 返回适当的内容类型:
header ('Content-Type: application/json');
echo json_encode($ret);
exit();
关于javascript - 如何使用 JQuery 获取 PHP 数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125433/