我像这样用 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;
}
以上结果导致“未捕获的类型错误:无法读取未定义的属性‘0’”
当我在数据上使用 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);
最佳答案
首先,尝试给 jquery 一个提示,即发送 json 并在浏览器控制台中查看它接收到的内容 ( http://api.jquery.com/jquery.get/ )
$.get('lib/class/json.php', data, function(returnData) {
var jsondata = returnData;
console.log(jsondata);
jsonupdateregion(jsondata);
}, 'json);
它应该输出一个对象或只是一个字符串....最终你的 php 在答案之前或之后回显一些新行或其他疯狂的事情。 字符集呢?您的服务器是否可能在 iso-something 中回答?如果有一些疯狂的字符(ü,ß,ç),那么 js 将无法解码您的 jsonstring
最后一件事
$jsonarray = array();
while($rs = mysqli_fetch_assoc($result)) {
$jsonarray[] = $rs; //add an element.. do not overwrite it
}
echo json_encode($jsonarray);
关于javascript - 在 javascript 中查询 php json_encode 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345977/