私はばかげた問題を抱えていますが、丸一日潜んでいても解決できません。
Fullcalendarインストールがあり、ファイル ( events.php )からイベント データを取得しようとしています。MySql テーブルからPhp経由でデータをロードします。
問題:
Php 経由でフィードを自動的に生成すると、カレンダーにイベントが表示されません。
しかし
ファイルにEXACT Json 行を書き留めると、正しく機能します。
例:
これは私のevents.phpです:
<?php session_start();
header("Content-Type: application/json");
//if (!isset($id_azienda)) die();
$id_azienda = $_GET['id_azienda'];
// Includo la classe
require_once("./db.class.php");
// Creo l'oggetto database
$db = new DataBase();
// Apro la connessione al database e ne memorizzo il risultato in $open
$open = $db->OpenConnection();
$eventiQuery = "SELECT * FROM scadenzario WHERE id_azienda ='$id_azienda'";
// Eseguo la query e ne memorizzo il risultato in $result
$eventiList = $db->Query($eventiQuery);
$numEventi = $db->NumRows($eventiQuery);
// Chiudo la connessione al database e ne memorizzo il risultato in $close
$close = $db->CloseConnection();
/* ************* FINE CARICAMENTO DATI DAL DATABASE ***************** */
while ($record = mysql_fetch_array($eventiList)) {
$event_array[] = array(
'id' => $record['id_scadenzario'],
'title' => $record['titolo'],
'start' => $record['data_inizio'],
'url' => $record['url']
);
}
echo json_encode($event_array);
?>
それは以下を生成します:
[{"id":"0","title":"test titolo","start":"2012-09-11","url":"http:\\\/\\\/yahoo.com\\\/"},{"id":"1","title":"test titolo","start":"2012-09-11","url":"http:\\\/\\\/google.com\\\/"}]
何も表示されません。
しかし、それをコピーしてファイル「events.php」に貼り付け、エコー行にコメントを付けると:
// echo json_encode($event_array);
?>
[{"id":"0","title":"test titolo","start":"2012-09-11","url":"http:\\\/\\\/yahoo.com\\\/"},{"id":"1","title":"test titolo","start":"2012-09-11","url":"http:\\\/\\\/google.com\\\/"}]
それは機能します。
編集:私のフルカレンダーの実装は次のとおりです。
var scadenzario = $('#scadenzario-calendario').fullCalendar({
events: "./events.php",
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
selectable: true,
selectHelper: true,
select: function(start, end, allDay) {
var title = prompt('Nome dell\'evento:');
if (title) {
scadenzario.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
allDay: allDay
},
true // make the event "stick"
);
}
scadenzario.fullCalendar('unselect');
},
//editable: true,
theme: true,
buttonText: {
today: 'Oggi',
month: 'Mese',
week: 'Settimana',
day: 'Giorno'
},
monthNames: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],
monthNamesShort: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'],
dayNames: ['Domenica', 'Lunedi', 'Martedi', 'Mercoledi', 'Giovedi', 'Venerdi', 'Sabato'],
dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab']
});
それはちょっとばかげています、私見。
ノート:
- 1 つのイベントだけを解析しようとすると、角括弧で問題が発生する可能性があることを読みました。それは私の状況ではありません。2 つのイベントで試しています。
- 最初に文字エンコーディングについて考えましたが、text/plain と application/json を試しましたが、どちらもうまくいきませんでした。
- URL にスラッシュが多すぎるのは、ここ数年で Gn'R のスリーズ ハード ロック スタイルがなくなったためです。笑XD(つまり、それは重要ではありません)
- 更新: fwrite で txt を作成し、json 文字列をファイルに書き込もうとしました。運がない。作業を完了する唯一の方法は、コードを手動でファイルに書き込むようです。まあ、私はそれを仕事のオファーと見なすかもしれません。笑。
何か案は?前もって感謝します :)
Ps: コード内のイタリア語のコメントと変数については申し訳ありませんが、それは問題ではありません ;)