2016-10-13 18 views
0

我正在使用php進行長時間池(可以正常工作)並將其輸出JSON分配給fullcalender事件源。NetworkError:403將eventsourcr分配到完整日曆時禁止

我的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); 
?> 

在控制檯中,我得到正確的輸出。

Consol Output

我得到錯誤,

Error

在另一個JS我還指定事件源fullcalender,

eventSources: [ 
     { 
      url:'model/appointments.php', 
      editable: true, 
     } 
    ] 

所以我的問題在那裏我錯了,有什麼建議麼?爲什麼我得到這樣的錯誤?

回答

0

我不認爲你的錯誤消息可能會匹配你的EventSource()調用,那麼你是否使用Apache與重寫規則(或類似的東西)?如果是這樣,錯誤在這些重寫規則中。 (我想問一下什麼是WEBROOT,但是我考慮的越多,我認爲它就越重要。)

原因:您的EventSource調用URL以「model/applongpooling.php?start = 1476037800 &端= 1476642600" 。但是,您的錯誤消息以「back_color%22:%22?start = 1476037800 & end = 1476642600」結束。即一切都在前面?已經變了。

我希望URL中的所有噪音都是導致403錯誤的原因。例如。也許它試圖訪問一些不存在的目錄?但是,重寫呼叫也可能是明確地發出403.

+0

是的,我正在做URL重寫,但如何可以導致我的錯誤,請解釋我。 :( – Archish

+0

@Archish(我認爲)重寫的URL是一個不存在的URL,或者以某種方式無效,因此它觸發了你看到的錯誤。 –