【问题标题】:Decode JSON object in jquery在 jquery 中解码 JSON 对象
【发布时间】:2014-03-22 14:36:41
【问题描述】:

我使用以下代码通过 php 将数据编码为 json 格式

  <?php

    $response = array();

    while ($row = mysql_fetch_array($result)) {

            $user["id"]                 = $row["id"];
            $user["name"]               = ucfirst($row["user_name"]);
            $user["date"]               = $row["date_of_treatment"];
            $user["age"]                = $row["age_of_user"];

            // push single user into final response array
            array_push($response, $user);

            $count = $count+1;
            $sum_of_age = $sum_of_age+$row["age_of_user"];

        }

    $response["average_age"]  = $sum_of_age / $count;
    $response["count"] = $count;

    echo json_encode($response);

?>

我必须在 jquery 中解码这个 json 为此我使用了这种方法

success: function(result){  

      if(result.length > 0) {      
          for(var i=0; i < result.length; i++) {
            obj = result[i];

            output = output + "<tr><td>"+(i+1)+"</td><td>"+obj.name+"</td><td>"+obj.age+"</td><td>"+obj.date+"</td><tr>";
          } 
          output = output+"<tr><td colspan='2' style='text-align:center'>"+obj.average_age+"</td></tr>"
        } else {
          output = output + "<tr><td colspan='4' style='text-align:center'>No Records Found..!</td></tr>";
        }
         $("#search-list tbody").html(output);     
      }  
  });

但这不起作用。请帮我改正

结果以这种格式进入控制台。如何遍历这个?。

{"0":{"id":"35","name":"Ahamed shajeer","date":"2014-03-03","age":"25"},"1":{"id":"36","name":"Meshajeer","date":"0000-00-00","age":"25"},"2":{"id":"37","name":"Iam shajeer","date":"0000-00-00","age":"25"},"average_age":25,"count":3}

【问题讨论】:

  • 请解释“不工作”。
  • @LShetty 响应进入控制台,但无法操作,这里 result.length 显示未定义
  • 试试我的答案。让我知道,以便我为您提供帮助。

标签: jquery decode json


【解决方案1】:
success: function(result){  
         var users = result.users;

if(users.length > 0) { 

      for(var i=0; i < users.length ; i++) {
        obj = users[i];

        output = output + "<tr><td>"+(i+1)+"</td><td>"+obj.name+"</td><td>"+obj.age+"</td><td>"+obj.date+"</td><tr>";
      } 
      output = output+"<tr><td colspan='2' style='text-align:center'>"+result.average_age+"</td></tr>"
    } else {
      output = output + "<tr><td colspan='4' style='text-align:center'>No Records Found..!</td></tr>";
    }


       $("#search-list tbody").html(output);     
      }  
  });

【讨论】:

  • 显示错误“ReferenceError: users is not defined”
  • @shajeer ,我已经编辑了您上一个问题的答案,请按照答案进行操作,您可以在此处使用最近发布的答案(由我)作为您的解决方案。
【解决方案2】:

因为您的数组不是单个数组。它是一个关联数组(一种字典)。

您所做的是按索引分配数组元素以获取用户信息,但是 $response["average_age"]$response["count"] 呢?您如何从中获取姓名、年龄、日期信息?

您应该传递两个数组,一个用于$users 等用户对象,另一个用于您的休息响应。

【讨论】:

  • 我怎样才能检索值呢?
  • 创建一个名为$users = new Array(); 的新数组,然后将每个用户对象推入其中。最后在循环完成后分配 $users 数组,如 $response['users'] = $users 并在 jquery 中检查 result.users.length 它给出用户对象的长度并从中获取信息,对于 average_age 获取它的 result.average_age 和 count 相同。
【解决方案3】:

所以,首先,您需要将 JSON 转换为数组才能获取长度。所以,试试吧:

success: function(result){
    var resultArr = $.parseJSON(result);
    alert (resultArr.length); //3
    //proceed with for loop here
    ....

PHP

$response["average_age"]  = $sum_of_age / $count;
$response["count"] = $count;
header('Content-type: application/json');
echo json_encode($response);

【讨论】:

  • 显示错误“SyntaxError: JSON.parse: unexpected character”
【解决方案4】:

试试这个

success: function(data) {
    var output = "";
    if (data.length > 0) {
        $.each(data, function(index, item) {
            output += "<tr><td>" + (i + 1) + "</td><td>" + item.name + "</td><td>" + item.age + "</td><td>" + item.date + "</td><tr>";
            output += "<tr><td colspan='2' style='text-align:center'>" + item.average_age + "</td></tr>";
        });
    } else {
        output += "<tr><td colspan='4' style='text-align:center'>No Records Found..!</td></tr>";
    }
    $('#search-list tbody').html(output);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2017-09-03
    相关资源
    最近更新 更多