2010-06-08 73 views
0

我已經寫了一個非常簡單的RESTful php服務器(我的第一個實驗是REST,所以隨時提出建議)來響應fullcalendar事件回調。它會生成與fullcalendar json示例中的json-events.php文件完全相同的字符串輸出,但出於某種原因,fullcalendar不會接受我的服務器的輸出。來自REST-ful php服務器的fullcalendar事件

我試過弄亂頭部,因爲它們與json-events.php產生的不同,但我不確定那裏有什麼錯誤,如果有的話。

服務器的代碼如下:

<?php 

class Listener{ 
    function __construct() { 
     $this->getResource(); 
     $this->buildResponse(); 
    } 

    function getResource(){ 
     $parts = explode('/', $_SERVER["REQUEST_URI"]); 
     $script_name = end(explode('/', $_SERVER["SCRIPT_NAME"])); 

     $this->resource = $parts[array_search($script_name, $parts) + 1]; 
     $this->resource_id = $parts[array_search($script_name, $parts) + 2]; 
    } 

    function buildResponse(){ 
     $method = strtolower($_SERVER["REQUEST_METHOD"]); 
     $this->response_string = $method . ucwords($this->resource); 
    } 
    function getResponse(){ 
     return $this->response_string; 
    } 
} 

$listener = new Listener(); 
$thing = $listener->getResponse(); 

$thing(); 

function getEvents(){ 
    $year = date('Y'); 
    $month = date('m'); 

    echo json_encode(array(

     array(
      'id' => 111, 
      'title' => "Event1", 
      'start' => "$year-$month-10", 
      'url' => "http://yahoo.com/" 
     ), 

     array(
      'id' => 222, 
      'title' => "Event2", 
      'start' => "$year-$month-20", 
      'end' => "$year-$month-22", 
      'url' => "http://yahoo.com/" 
     ) 
    )); 
} 
?> 

任何輸入,幫助或建議將不勝感激!

謝謝, 大衛

回答

0

想通了。我的PHP沒有處理「?」後發送的額外參數在網址中,所以它正在尋找不存在的操作!哎呀!

1

正如你猜到了,它可能是你的頭。我不確定「fullcalendar」是什麼,但是如果它正在尋找JSON響應,您可能需要將您的內容類型設置爲application/json

+0

fullcalendar是一個jQuery日曆插件。我很確定json_encode方法返回一個json對象的字符串表示形式,這就是fullcalendar所期望的。所以,因爲它返回一個字符串,我認爲text/html內容類型仍然適用。此外,這是插件附帶的工作示例中的內容類型。 – biagidp 2010-06-08 14:45:09

+1

這是一個字符串...但字符串是JSON,所以application/json會更合適。不能對他們的例子說:) – jvenema 2010-06-08 14:47:59