【问题标题】:reading json object data读取json对象数据
【发布时间】:2012-05-18 09:58:13
【问题描述】:

client.html

如何在客户端编写这个 json 数据检索,以便循环出每个框和其中的样式。

这样的事情是行不通的......

success:  function(output) {
    var records = output.data;
    var str = "";

    if (records) {
        alert(records.length);

        for (var i = 0; i < records.length; i++) {
            for (var j in records[i]) {
                str += j + " --> " + records[i][j] + "\n";
            }
        }
    }
}

test.php

$sql= "select id, style from table";
$result = mysql_query ($sql);

while($r = mysql_fetch_assoc($result)) {
    $id = $r['id'];
    $rows[$id] = $r;
}

$data = array(
    'data' => $rows,
    'debug' => $msg,
    'status'    => 1
);

在构建功能中借助 php 转换为 json 后的数据。 (我想要的格式)

{
    "data": {
        "box1": { "style":"position: absolute;", "id":"box1" },
        "box2": { "style":"position: relative;", "id":"box2" },
        "box88": { "style":"position: relative;", "id":"box3" }
    },
    "debug":"feedback to client end",
    "status":1
}

【问题讨论】:

  • 您是否尝试过打印 $rows 和 $msg... 会发生什么。

标签: jquery arrays json object


【解决方案1】:

@Rory,您的函数 id 中的问题是您正在迭代对象属性,就好像它是一个数组一样。我想下面的代码可以解决你的问题(你也可以看到它在 this fiddle 上工作)。

function process(records) {
    result = [];
    for(var rec in records) {
        var row = [rec + "->"];
        for(var stl in records[rec]) {
            row.push("\t" + stl + "->" + (records[rec][stl]));
        }
        result.push(row.join("\n"));
    }

    $("#result").html(result.join("\n"));
}

// var obj = { your original data }
process(obj.data);

【讨论】:

  • 我从没想过用这种方式,绝妙的解决方案:)
  • 进一步建议:为了获得更好的性能,请使用Array.push()Array.join() 方法来连接字符串:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
相关资源
最近更新 更多