私はこの問題についてウェブを検索してきましたが、あまり幸運ではありませんでした。
symfonyを使用してデータベースからデータを取得し、extjsライブラリにロードしています。私の問題は、データをロードするときに、 「Ext.Error:無効なJSON文字列をデコードしようとしています」というエラーが発生することです。
データベースはデータのセットを返すため、データベースを正しく照会しました。私が思う問題は、配列をjson形式に変換することです。
返されたjson形式をデバッグするときに表示される内容は次のとおりです。
それに対する私のコードは次のとおりです。
public function executeGetData(sfWebRequest $request)
{
$SQL = " SELECT sked.id, sked.program_id, sked.agentname,
sked.customername, sked.customercontact, sked.callback_dt,
sked.callback_dt AS date_closed
FROM schedule sked LIMIT 5";
$Doctrine_Manager = Doctrine_Manager::getInstance()->getConnection('callback_tracker');
$result = $Doctrine_Manager->fetchAll($SQL);
$final = array("evts" => $result);
$finalJson = json_encode($final);
echo $finalJson;
私のイベントストア:
var eventStores = Ext.create('Extensible.calendar.data.EventStore', {
//autoLoad: true,
id: 'calStore',
proxy: {
type: 'rest',
url: '/home/GetData',
//appendId: false,
method: 'POST',
reader: {
type: 'json',
root: 'evts'
},
writer: {
type: 'json',
nameProperty: 'mapping'
},
listeners: {
exception: function(proxy, response, operation, options){
var msg = response.message ? response.message : Ext.decode(response.responseText).message;
// ideally an app would provide a less intrusive message display
Ext.Msg.alert('Server Error', msg);
}
}
},
listeners: {
'write': function(store, operation){
var title = Ext.value(operation.records[0].data[Extensible.calendar.data.EventMappings.Title.name], '(No title)');
console.debug('Operation Action = ' + operation.action);
switch(operation.action){
case 'create':
//Extensible.example.msg('Add', 'Added "' + title + '"');
break;
case 'update':
//Extensible.example.msg('Update', 'Updated "' + title + '"');
break;
case 'destroy':
//Extensible.example.msg('Delete', 'Deleted "' + title + '"');
break;
}
}
}
});
Calendar.BTWのRenderの後にロードします。使用しているライブラリはExtensibleCalendarです。
ここでの問題は何ですか?json形式ですか?これをどのように変換しますか?