0

我正在使用 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,
        }
    ]

所以我的问题是我哪里错了,有什么建议吗?为什么我会收到这样的错误?

4

1 回答 1

0

我认为您的错误消息可能与您的 EventSource() 调用不匹配,那么您是否使用带有重写规则(或类似规则)的 Apache?如果是这样,那么错误就在那些重写规则中。(本来想问WEBROOT是什么,但越想越觉得没关系。)

原因:您的 EventSource 调用 URL 以“model/applongpooling.php?start=1476037800&end=1476642600”结尾。但是您的错误消息以“back_color%22:%22?start=1476037800&end=1476642600”结尾。即前面的一切?已经变了。

我希望 URL 中的所有噪音都是导致 403 错误的原因。例如,也许它正在尝试访问一些不存在的目录?但是,重写调用也可以显式发出 403。

于 2016-10-13T20:21:05.967 回答