【发布时间】:2015-08-26 09:31:35
【问题描述】:
我无法访问从我的 AJAX JQUERY 调用返回的 JSON 数据。
AJAX 与查询一样正确执行。我得到了正确的数据返回;这由我 JSON_ENCODE 的两个数组组成。我需要能够独立访问两个数据集。
当你们看到代码时,这可能是有道理的:
**PHP**
$sql501 = "SELECT member,COUNT(member) as cont from loggederrors WHERE err = '".$hello."' GROUP BY member ";
$result50 =mysqli_query($con,$sql501);
$count50=mysqli_num_rows($result50);
$member = array();
$count = array();
while($row56 = mysqli_fetch_assoc($result50)) {
array_push($member, $row56['member']);
array_push($count, $row56['cont']);
}
echo JSON_encode($member);
echo JSON_encode($count);
?>
$member 和 $count 是数组,当它们返回并登录到我的 AJAX 成功函数时,它们看起来像这样:
["Missed Entry"]["1"]["Missed Entry","Overwrite"]["1","1"]
数据的顺序正确,但似乎重复了,我理解这是因为我将每次迭代都推送到数组中。它是我得到的最接近的,因为顺序是正确的。我尝试构建一个关联数组并使用各种不同的 mysqli 输出,即 num_rows、fetch_assoc
以前使用 JSON 时,我从来没有遇到过问题并且有访问数据的密钥:
这里是 AJAX:
$.ajax({url: 'getstaffresults.php',
data: {stafftosend:stafftosend },
type: 'post',
async: 'true',
success: function(data){
console.log(data);
}
});
我之前可以使用 data.keyIwant 访问单个密钥,但这并没有按预期出现。非常感谢任何帮助。
目标是访问这两个数组。如果有意义的话,我不需要访问数组中的值。
我尝试构建一个二维数组并对其进行编码,但我还是无法访问它。
我试过 JSON.stringyfy , JSON.parse
【问题讨论】:
-
当你 console.log
data你得到["Missed Entry"]["1"]["Missed Entry","Overwrite"]["1","1"]??因为那不是 json,只是一个可以解析为数组的字符串,你最好改变你的 php 以返回有效的 json -
@atmd 我知道这是我的主要问题,如果我将它作为 JSON 我可以访问它,但它不会像我期望的那样从 JSON_encode 返回,我正在努力操纵它以使其表现得像我一样想要它。
-
我认为保留字
json_encode()区分大小写。尝试将您的JSON_encode()更改为小写字母。 -
感谢@aldrin27,输出已更改为
["Missed Entry","Overwrite"]["1","1"]。我就是无法访问它。 -
为什么不简单地
echo json_encode( array( 'members'=>$member, 'count'=>$count) );