2014-03-29 28 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); 
});