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 に答える