MS-Access DB クエリから返された JSON 文字列を取得しようとしています。レコードセット ($rs) は問題ありませんが、レコードセット内のすべてのフィールドを知らずに、JSON を返すためにループしようとしています。以下は、私が欲しいものを返しますが、探しているもので[["aaa":"bbb","ccc":"ddd"]]
はありません。[{ ... }]
$num_columns = $rs->Fields->Count ();
//echo $num_columns . "<br>";
$arrColumns = array();
for ($i=0; $i < $num_columns; $i++) {
$arrColumns[] = $rs->Fields($i);
}
$arrResult = array();
while (!$rs->EOF) {
$arrRow = array();
for ($i=0; $i < $num_columns; $i++) {
$arrRow[] = $arrColumns[$i]->value;
}
$arrResult[] = $arrRow;
$rs->MoveNext();
}
//var_dump($arrResult);
echo json_encode($arrResult);
//print_r($arrResult);
[アップデート]:
動的部分を達成しましたが、結果にはまだ問題があります。私は json_encode($Array)
自分のJQueryで思い通りに結果を得ることができません。
$num_columns = $rs->Fields->Count ();
$arrColumns = array();
for ($i=0; $i < $num_columns; $i++) {
$arrColumns[] = $rs->Fields($i);
$newArr[] = $rs->Fields($i)->name;
}
$arrResult = array();
while (!$rs->EOF) {
$arrRow = array();
for ($i=0; $i < $num_columns; $i++) {
$arrRow[$newArr[$i]] = $arrColumns[$i]->value;
}
$arrResult[] = $arrRow;
$rs->MoveNext();
}
echo $_GET['callback'] . '(' . json_encode($arrResult) . ')';
私の JSON は次のように返されます:[{"First":"John"},{"Last":"Doe"}]
オブジェクトにラップされた配列。クライアント側で次のように処理できるように、オブジェクトまたは配列のいずれかを返す必要があります。{"First":"John"},{"Last":"Doe"}
<script>
$.getJSON('http://remote.domain.com/json.php?callback=?',function(res){
alert('Results: '+res.Last);
});
</script>
私はそれが私の方法でありjson_encode($Array);
、クラスを使用していないのではないかと思いますか?