我呼应的JSON用PHP,像这样:查询PHP jsonencode结果在JavaScript
$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);
}
上面的函数必须为数组区域中的每个区域调用以下函数并返回oc currences
function getCount(regions, jsondata) {
var count = 0;
for (var i = 0; i < jsondata.length; i++) {
if (jsondata.channelName[i] == regions) {
count++;
}
}
return count;
}
上述结果在“遗漏的类型错误:无法读取属性‘0’的未定义”:“未捕获的SyntaxError当我使用的数据我得到这样一个错误的json.parse
:意外的令牌{
php文件本身发送一个标题:“header('Content-Type:text/html;字符集= UTF-8' );”
我在做什么错在这里 当我使用json.parse我得到一个错误,说明了unexpectit令牌
我已经改变了服务器上的查询和?它现在definitly根据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++;
}
TO:
for (i = 0; i < obj.length; i++) {
if (obj[i].channelName == regions) {
count++;
}
自PHP恢复到呼应 回声json_encode($ JSON);
首先在弗里斯兰所有完整的报价”,这样 ‘弗里斯兰JS会失败你jsonstring解码’, – 2014-12-07 18:12:28
有你尝试用'var regions = {...}替换'var regions = [...]' – 2014-12-07 18:13:07
这里的引号是一个错字,而不是原因。得到如下错误:“未捕获的SyntaxError:意外的令牌, – ingridsede 2014-12-07 18:39:37