2014-03-29 30 views
0

我想了解和使用json。大多数例子只留下了让我悬挂的东西,或者我最终想要做的jQuery或ajax,但现在只想了解json的基础知识。这PHP代码似乎是工作,但是JavaScript并不是....如何从javascript变量检索json数据

<!DOCTYPE html> 
<html> 
<head> 
<title>Connecting MySQL Server</title> 
<meta charset="utf-8"> 
<meta name="author" content="Charlie R Chisholm"> 
<?php 

    $mysqli = new mysqli(dbhost,dbuser,dbpass,dbc); 
    if ($mysqli->connect_error) { 
     die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); 
     } 

    $query = $mysqli->query("select * from codeTable where tableCode='TABLE' order by Description"); 
    $json = array(); 
    if($query->num_rows){ 
     while($tblArray[] = $query->fetch_object()){ 
     $json['codeTable'][]=$tblArray; 
     } 
    } 
    mysql_close($mysqli); 
    echo json_encode($json); 
?> 
<script language="JavaScript"> 
    var tbl = <? echo json_encode($json) ?>; 

      // How would I get the Description data in the second row (for example) 
      // the line below is certainly not right      

    alert(tbl["codeTable"][1].Description); 

</script> 

</head> 

<body> 
</body> 
</html> 

,我得到这样的结果......

{"codeTable":[[{"codeID":"4","tableCode":"TABLE","Description":"Document Type","Code":"DOCTP","groupCode":"","t1":null,"t2":null,"t3":null,"createDate":"2014-03-28 18:52:06","chaDate":null}],[{"codeID":"4","tableCode":"TABLE","Description":"Document Type","Code":"DOCTP","groupCode":"","t1":null,"t2":null,"t3":null,"createDate":"2014-03-28 18:52:06","chaDate":null},{"codeID":"8","tableCode":"TABLE","Description":"Images","Code":"IMAGE","groupCode":"","t1":"Upload Doc Name","t2":null,"t3":null,"createDate":"2014-03-28 18:57:15","chaDate":null}],[{"codeID":"4","tableCode":"TABLE","Description":"Document Type","Code":"DOCTP","groupCode":"","t1":null,"t2":null,"t3":null,"createDate":"2014-03-28 18:52:06","chaDate":null},{"codeID":"8","tableCode":"TABLE","Description":"Images","Code":"IMAGE","groupCode":"","t1":"Upload Doc Name","t2":null,"t3":null,"createDate":"2014-03-28 18:57:15","chaDate":null},{"codeID":"1","tableCode":"TABLE","Description":"Note Type","Code":"NTYPE","groupCode":"GENRL","t1":"","t2":"","t3":"","createDate":"2014-03-11 18:26:27","chaDate":"0000-00-00 00:00:00"}],[{"codeID":"4","tableCode":"TABLE","Description":"Document Type","Code":"DOCTP","groupCode":"","t1":null,"t2":null,"t3":null,"createDate":"2014-03-28 18:52:06","chaDate":null},{"codeID":"8","tableCode":"TABLE","Description":"Images","Code":"IMAGE","groupCode":"","t1":"Upload Doc Name","t2":null,"t3":null,"createDate":"2014-03-28 18:57:15","chaDate":null},{"codeID":"1","tableCode":"TABLE","Description":"Note Type","Code":"NTYPE","groupCode":"GENRL","t1":"","t2":"","t3":"","createDate":"2014-03-11 18:26:27","chaDate":"0000-00-00 00:00:00"},{"codeID":"5","tableCode":"TABLE","Description":"Projects","Code":"PRJCT","groupCode":"","t1":null,"t2":null,"t3":null,"createDate":"2014-03-28 18:53:14","chaDate":null}]]} 

......但在这里,我不知道哪里我去。我尝试从tbl变量中检索具有几种不同符号样式的信息,但我似乎得到“undefined”或“[object]”或“[object] [object]”而不是数据。有人可以帮助我理解我需要从json中检索值的语法吗? (警示框只是一个不知道我在做什么的例子)

回答

1

tbl["codeTable"][1]是一个数组,而不是一个对象。它没有Description属性。

您需要选择阵列中的某个项目。

tbl["codeTable"][1][0]

这是一个对象,它确实有一个Description属性。

tbl["codeTable"][1][0].Description


或者,只是不与它摆在首位一个项目创建阵列。

while($tblArray[] = $query->fetch_object()){ 
    $json['codeTable'][]=$tblArray; 
} 

应该是:

while($myObject = $query->fetch_object()){ 
    $json['codeTable'][] = $myObject; 
} 
-1
var tbl = <? echo json_encode($json) ?>; 
var content = $.parseJSON(tbl); 
$.each(content, function(key, value) { 
    alert(key + ": " + value); 
});