我正在使用php进行长时间池化(其工作正常)并将其输出JSON分配给fullcalender事件源。
我的js代码
var source = new EventSource(WEBROOT+'model/applongpooling.php?start=1476037800&end=1476642600');
source.addEventListener('message', function(e) {
console.log(e.data);
$('#calendar').fullCalendar( 'removeEvents');
$('#calendar').fullCalendar('addEventSource',e.data);// here i am getting error
}, false);
我的php池代码。
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
function SetAppointment(){
//my logic which is working fine and giving me correct result
echo 'data: ' . json_encode($res) . "\n\n";//code to get output
echo PHP_EOL;
ob_flush();
flush();
}
do {
SetAppointment();
sleep(15);
// If we didn't use a while loop, the browser would essentially do polling
// every ~3seconds. Using the while, we keep the connection open and only make
// one request.
} while(true);
?>
在控制台中我得到了正确的输出。
我收到错误,
在另一个js中,我还将事件源分配给fullcalender,
eventSources: [
{
url:'model/appointments.php',
editable: true,
}
]
所以我的问题在哪里我错了,有什么建议吗?为什么我会收到这样的错误?
答案 0 :(得分:0)
我不认为您的错误消息可能与您的EventSource()调用匹配,那么您是否使用Apache重写规则(或类似的东西)?如果是这样,那些错误就在那些重写规则中。 (我打算问一下WEBROOT是什么,但我想的越多,我觉得这不重要。)
原因:您的EventSource调用网址以“model / applongpooling.php?start = 1476037800&amp; end = 1476642600”结尾。但您的错误消息以“back_color%22:%22?start = 1476037800&amp; end = 1476642600”结尾。即一切都在前面?已被改变。
我希望网址中的所有噪音都是造成403错误的原因。例如。也许它试图访问一些不存在的目录?但是,重写调用也可以明确地发出403。