2012-03-28 210 views
2

我已經使用cakePHP作爲服務器端語言在JQM中進行了完整的應用。此階段的應用程序只能通過瀏覽器訪問。PhoneGap + jQuery Mobile + cakePHP

我已經使用標準的SQL在PHP中把所有的數據,我沒有使用JSON的。我的問題是我是否必須與cakePHP溝通才能讓我的應用程序在iPHONE上工作並採用更多JSON方法?

我很新的JSON和有問題的方面如何,我會處理訪問控制和控制哪些數據對某些用戶可見。

我的想法至今將建立PhoneGap的一個模板,這樣應用程序可以離線工作,並提供培訓相關的錯誤信息和我的其他應用程序可以被加載到它一旦用戶選擇登錄?在正確的方向

任何意見或輕移將上衣。

+0

我回答下面關於使用JSON和PHP。有關「建立一個模板,這樣的PhoneGap應用程序脫機工作」部分,你可以看看有規定做MVC(如Backbone.js的還是一百萬等)的一些功能框架。只要該頁面沒有被重新加載,這將工作。數據存儲在內存中,通過Ajax與服務器同步的時候是可以的,如果不能,那麼你可以註冊一個錯誤回調,以處理這種情況。 – webjprgm 2012-03-28 05:35:25

回答

1

PHP可以通過內置的功能json_encode和json_decode使用JSON。所以如果你願意,你可以繼續使用CakePHP作爲後端,客戶端既不知道也不關心。

對於PHP JSON文檔,請參閱:http://us.php.net/manual/en/function.json-encode.php

使用JSON的是什麼格式,您在客戶端和服務器之間發送數據的選擇。 JSON恰好在用Javascript編寫的客戶端方便。你不需要使用JSON來製作一個iPhone友好的網站/網絡應用程序。

我一般的做法是對我的PHP數據對象的toJSON功能。我有一個函數用於將JSON發送到客戶端,並且在發送對象之前它首先查找toJSON方法。如果它發現它,它會調用它併發送結果。這使對象有機會呈現最小的一組數據成員,而不是發送所有內容。這也是Ruby on Rails中使用的基本方法。

下面是一個例子。也許CakePHP有他們自己的等價物:

function sendJSON($data) { 
    header('Content-Type: application/json'); 
    header('Cache-Control: no-cache, must-revalidate'); 
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 

    echo json_encode_custom($data); 
    //echo '(' . json_encode($data) . ')'; 
} 

function json_encode_custom($data) { 
    if(is_object($data) && method_exists($data, 'toJSON')) 
      $data = $data->toJSON(); 
    return json_encode($data); 
} 
0

你可以隨時讓你的cakePHP網站。

由於PhoneGap的只能有HTML,CSS和JavaScript,你需要一個遠程服務器來提供API服務,使應用程序可以從遠程服務器通過javascript請求數據。然後遠程服務器可以通過以json格式對數據進行編碼來應答請求。