こんにちは、JSON を使用して location.xml というファイルから情報を取得するスクリプトを持っています。現在、コードを使用してデータベースから情報を取得しようとしています。
以下は、元の JSON ファイルと XML 構造です。
//Check if the locations.xml file exists, if it does encode it to JSON for the app
if (file_exists('locations.xml')) {
$xml = simplexml_load_file('locations.xml');
$json = json_encode($xml);
print_r($json);
} else {
exit('Failed to open locations.xml.');
}
<location>
<title>Union Station</title>
<address>800 North Alameda Street Los Angeles, CA 90012</address>
<details>Los Angeles Union Station (or LAUS, formerly the Los Angeles Union Passenger Terminal or LAUPT) is the main railway station in Los Angeles, California.</details>
<images>
</images>
<marker>/css/img/markers/binoculars.png</marker>
<lat>34.05515</lat>
<lng>-118.23525</lng>
</location>
これにより、次の出力が得られました
{"location":[{"title":"Hollywood Sign","address":"3204 Canyon Lake Drive, Los Angeles, CA","details":"The Hollywood Sign is a famous landmark in the Hollywood Hills area of Mount Lee, Santa Monica Mountains, in Los Angeles, California. The iconic sign spells out the name of the area in 45-foot-tall (14 m) and 350-foot-long (110 m) white letters.","images":{"image":["1_1.jpg","1_2.jpg"]},"marker":"\/css\/img\/markers\/photography.png","lat":"34.134103","lng":"-118.321694"}]}
私が行ったことは、PHPコードを呼び出してMYSQLデータベースから同じ情報と構造を取得するように上記を変更したことです。コードはJSON出力とともに以下に示されています。
$query = mysql_query("SELECT * FROM locations");
$rows = array();
while($row = mysql_fetch_assoc($query)) {
$rows['location'][] = $row;
}
print json_encode($rows);
{"location":[{"Title":"Hollywood Sign","Address":"3204 Canyon Lake Drive, Los Angeles, CA","details":"The Hollywood Sign is a famous landmark in the Hollywood Hills area of Mount Lee, Santa Monica Mountains, in Los Angeles, California. The iconic sign spells out the name of the area in 45-foot-tall (1","images":"","marker":"\\\/css\\\/img\\\/markers\\\/photography.png","lat":"34.134103","lng":"-118.321694"}]}
両方の出力が同じであることがわかるように、2 番目の出力には情報が表示されません。私のコードには、JSON データを取得して渡すように見える次のコードがあります。
//Register the Location Model
Ext.regModel('Locations', {
fields: locationFields //Set the fields to be stored from the config file
});
//Load XML data from JSON into local store
app.stores.LocationsList = new Ext.data.Store({
model: "Locations", //Model to use for the Store
sorters: [{
property: 'title', //Set the title as a sorter to the listing card can use the grouped list layout
direction: 'ASC'
}],
proxy: {
type: 'ajax', //Load JSON from our source defined in the config file
url: JSON_SOURCE,
reader: {
type: 'json',
root: 'location'
},
id : 'Locations'
},
getGroupString : function(record) {
// return the first character of the address in order to group
return record.get('title')[0];
},
listeners: {
'load': function (t, r, s) {
//Fire custom event once all the load is complete
Ext.dispatch({
controller: app.controllers.map,
action: 'loaded',
records: r
});
},
},
autoLoad : true //We start loading the info into the datastore immediately after the app is started to make it available ASAP
});
この最後のコードを何十回も実行しましたが、2 番目の情報を異なる方法で処理する理由がわかりません。
任意の提案をいただければ幸いです。
ありがとう