javascript - 在 javascript 中查询 php json_encode 结果

标签 javascript php json

我像这样用 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/

相关文章:

php - 在 session 中存储 php 变量并调用分页链接

php - 如何在 div 下定位单选按钮?

php - MySQL 多个项目链接到一个 ID

php - 缓存通过 PHP/AJAX/JSON/jQuery 加载的动态图像

javascript - 如何以编程方式创建 Gmail 过滤器?

javascript - 在循环完成后的 For 循环中获取 json JS

javascript - 将无序列表项中的前两个元素内联对齐,其余每行对齐一个

Javascript Array.push 在 get 方法中不起作用

javascript - 使用选择选项更改语言 (URL)

json - Golang : Protobuff generated Struct is not decoding child attribute for json. 解码