【发布时间】:2025-12-22 16:10:16
【问题描述】:
我用 php 回显 json,如下所示:
$jsonarray= array();
while($rs = mysqli_fetch_assoc($result)) {
$jsonarray["userName"]= $rs["userName"];
$jsonarray["UserGender"]= $rs["UserGender"];
$jsonarray["channel"]= $rs["channel"];
$jsonarray["channelName"]= $rs["channelName"];
$jsonarray["camonoff"]= $rs["camonoff"];
$jsonarray["rtccam"]= $rs["rtccam"];
$jsonarray["iswatching"]= $rs["iswatching"];
$jsonarray["iswatchingembed"] = $rs["iswatchingembed"];
$jsonarray["islisteningtoradio"]= $rs["islisteningtoradio"];
$jsonarray["statusmsg"] = $rs["statusmsg"];
$jsonarray["activity"]= $rs["activity"];
echo json_encode($jsonarray);
}
通过 ajax 调用,我得到如下字符串:
$.get('lib/class/json.php', data, function(returnData) {
jsondata= returnData;
jsonupdateregion(jsondata);
});
我将接收到的数据传递给如下函数:
function jsonupdateregion(jsondata) {
var regions = ["Lobby", "Noord-Brabant", "Groningen", "Friesland", "Gelderland", "Limburg", "Zeeland", "Overijssel", "Drenthe", "Noord-Holland", "Zuid-Holland", "Utrecht", "Belgie", "Duitsland"];
var i;
str= "";
for (i = 0; i < regions.length; i++) {
str += regions[i]
+ getCount(regions[i], jsondata);
}
console.log(str);
}
上述函数必须为数组区域中的每个区域调用以下函数并返回出现次数
function getCount(regions, jsondata) {
var count = 0;
for (var i = 0; i < jsondata.length; i++) {
if (jsondata.channelName[i] == regions) {
count++;
}
}
return count;
}
上面的结果是“Uncaught TypeError: Cannot read property '0' of undefined”
当我在数据上使用 json.parse 时,我得到一个错误,例如:“ Uncaught SyntaxError: Unexpected token {
php 文件本身发送一个标题:“header('Content-Type: text/html; charset=utf-8');”
我在这里做错了什么? 当我使用 json.parse 时,我收到一个错误,指出意外令牌
我已经更改了服务器上的查询,现在它肯定会根据http://jsonlint.com/ 输出有效的 Json。
if(isset($test)){
$sql = 'SELECT
userName,
UserGender,
UserRegion,
channel,
channelName,
camonoff,
rtccam,
iswatching,
iswatchingembed,
islisteningtoradio,
statusmsg,
activity
FROM
users';
$result=mysqli_query($conn,$sql);
$json = array();
if(mysqli_num_rows($result)){
while($row=mysqli_fetch_assoc($result)){
$json[]=json_encode($row);
}
}
mysqli_close($mysqli);
echo json_encode($json);
}
更新:
问题出在javascript中:
不得不改变:
for (i = 0; i < obj.length; i++) {
if (obj.channelName[i] == regions) {
count++;
}
到:
for (i = 0; i < obj.length; i++) {
if (obj[i].channelName == regions) {
count++;
}
并在 php 中恢复回显 echo json_encode($json);
【问题讨论】:
-
首先在弗里斯兰完整报价”,比如这个“弗里斯兰”,
-
你试过用
var regions = {...}替换var regions = [...] -
这里的引号是一个错字,不是原因。将 [ 变为 { 也不会这样做。我收到如下错误:“ Uncaught SyntaxError: Unexpected token ,
-
您将多少条记录转换为 JSON?您使用 while 循环的事实似乎不止一个。
-
@mickey 大约有 100 条记录。您现在可以在transonly.nl/lib/class/json.php?test 看到结果
标签: javascript php json